2014-01-28 6 views
-1

это ошибка, каккак решить SQL (случай, когда), (в)

Неправильный синтаксис около «»

когда я выбираю использовать случай, когда заявление, плз помочь мне спасибо !!!!

если заявление:

declare @module nvarchar(max)='tenant' 
if (@module='tenancy') 
select 'All' 
UNION 
select distinct affect_table from sys_log where affect_table in ('contract','rent_free','dn_override') 

случай, когда оператор:

select 'All' 
UNION 
select distinct affect_table from sys_log where affect_table in (case when @module='tenant' THEN ('contract','rent_free','dn_override')) 

ответ

0

Не похоже, что вам нужно CASE, только простая логика:

select distinct affect_table from sys_log 
where 
    (affect_table in ('contract','rent_free','dn_override') 
    and 
    @module = 'tenant') 

Что касается того, почему ваша попытка не работает, это потому, что CASE - это выражение - оно должно возвращать скалярное значение. Не набор значений. Не список. Или все, что вы решили, ('contract','rent_free','dn_override'), само по себе, должно было стать примером.

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