Как использовать CASE в SQL, отображается синтаксическая ошибка - PullRequest
1 голос
/ 24 апреля 2010

Я пытаюсь извлечь некоторые записи из таблицы на основе моего запроса, но он показывает мне ошибку

Сообщение 102, Уровень 15, Состояние 1, Строка 2 Неверный синтаксис рядом с '>

select vd.LedgerId,(CreditAmt-DebitAmt) AS NET, CASE NET
WHEN NET > 0 THEN 'Debit' WHEN NET < 0 THEN 'Credit' ELSE 'Nil'End
from dbo.vdebit vd INNER JOIN dbo.vCredit vc  ON vd.LedgerId=vc.LedgerId

Ответы [ 3 ]

2 голосов
/ 24 апреля 2010

Спасибо и Виксеру, и Трею, поскольку у меня была некоторая синтаксическая проблема, которая была им доведена до моего сведения, и после этого у моего запроса все еще была проблема.

Проблема была: Net был псевдонимом для моего столбца, и когда я проверял его в выписке case, он не смог найти тот же столбец.

ERROR

select vd.LedgerId,(CreditAmt-DebitAmt) AS NET,
CASE 
   WHEN NET > 0 THEN 'Debit' 
   WHEN NET < 0 THEN 'Credit' 
   ELSE 'Nil' 
End
AS NetVal
from dbo.vdebit vd INNER JOIN dbo.vCredit vc  ON vd.LedgerId=vc.LedgerId

Исправление сделано

select vd.LedgerId,(CreditAmt-DebitAmt) AS NET,
CASE 
   WHEN (CreditAmt-DebitAmt) > 0 THEN 'Debit' 
   WHEN (CreditAmt-DebitAmt) < 0 THEN 'Credit' 
   ELSE 'Nil' 
End
AS NetVal
from dbo.vdebit vd INNER JOIN dbo.vCredit vc  ON vd.LedgerId=vc.LedgerId
1 голос
/ 24 апреля 2010

При использовании искомого выражения регистра синтаксис выглядит так:

CASE
   WHEN NET > 0 THEN 'Debit'
   WHEN NET < 0 THEN 'Credit'
   ELSE 'Nil'
END

Так что просто замените CASE NET на CASE.

0 голосов
/ 24 апреля 2010

Сначала вы используете одновременно входное выражение и логические выражения в вашем случае ( см. Здесь ). Выглядит так, как будто вы пытаетесь присвоить значение этого оператора case переменной, но ваш синтаксис неверен. Я считаю, что это то, что вы ищете:

select vd.LedgerId,(CreditAmt-DebitAmt) AS NET,
CASE WHEN NET > 0 THEN 'Debit' WHEN NET < 0 THEN 'Credit' ELSE 'Nil' End
AS NetVal
from dbo.vdebit vd INNER JOIN dbo.vCredit vc  ON vd.LedgerId=vc.LedgerId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...