如何解决sql(case的情况),(in)

时间:2014-01-28 09:45:45

标签: sql-server tsql

是错误的

  

','

附近的语法不正确

当我选择使用case语句时,plz帮我谢谢!!!!

if statement:

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'))

1 个答案:

答案 0 :(得分: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')本身就是一个实例。