2014-10-10 2 views
1

Друзья ..заявление Дело в том, где положение не работает

Я использую хранимую процедуру, в которой есть дополнительный параметр @equal и значение по умолчанию NULL. Если пользователь дает некоторое значение параметру, запрос SQL должен быть изменен. Я пытаюсь использовать предложение Case in Where. но это показывает некоторую ошибку. Помогите мне с правильным синтаксисом или с лучшей логикой

Мое требование Когда пользователь не дает значение для @equal затем
FiscalYear < @yr
Else
FiscalYear < = @ год

Select BankCode,(SUM(Debit)-SUM(Credit)) Amt 
From vwDailyData 
Where [email protected] and FiscalYear< (CASE WHEN @equal IS NULL THEN @yr ELSE '='[email protected]) 
and BankCode<>'Cash' 
Group By BankCode 

Модифицированный Вопрос

Select BankCode,(SUM(Debit)-SUM(Credit)) Amt 
From vwDailyData 
Where [email protected] AND (CASE WHEN @equal IS NULL THEN FiscalYear < @yr ELSE FiscalYear <= @yr END) 
and BankCode<>'Cash' 
Group By BankCode 

Сообщение об ошибке Msg 102, уровень 15, состояние 1, процедура spDisplayBankConsolidate, строка 14 Неверный синтаксис рядом с '<'.

ответ

3

У вас есть две ошибки в вашем состоянии:

  • CASE выражения испытывает недостаток END и
  • Вы не можете поставить другой оператор в выражении CASE.

условие должно выглядеть следующим образом:

WHERE [email protected] AND 
((@equal IS NULL AND FiscalYear < @yr) OR (@equal IS NOT NULL AND FiscalYear <= @yr)) 
AND BankCode<>'Cash' 

Обратите внимание на @equal IS NULL и @equal IS NOT NULL условия в двух частях выражения OR. Поскольку эти два являются взаимоисключающими, только одна сторона OR будет решать, какие строки включать в результат запроса.

+0

Или вы могли бы использовать ... 'И CASE КОГДА @equal IS NULL THEN FiscalYear <@yr ELSE FiscalYear <= @yr END', если вы хотите использовать инструкцию' CASE'. –

+0

Я получаю эту ошибку Msg 102, Level 15, State 1, Procedure spDisplayBankConsolidate, Строка 14 Неверный синтаксис рядом с '<'. Msg 102, уровень 15, состояние 1, процедура spDisplayBankConsolidate, строка 21 Неверный синтаксис рядом с ')'. –

+0

@JineshSam Не могли бы вы разместить свой новый запрос где-нибудь? Похоже, в запросе есть отсутствующая или дополнительная скобка. – dasblinkenlight

Смежные вопросы