2014-01-28 60 views
-1

它像如何解決SQL(情況下),(中)

附近有語法錯誤「」

當我選擇當語句中使用的情況下,plz幫助我感謝錯誤!!!!

if語句:

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')本身就是一個例子。