Select 带有CASE的SQL语句

Select 带有CASE的SQL语句,select,case,where,Select,Case,Where,这句话能跟在哪里的情况下起作用吗?我希望你明白我的意思。谢谢。选择[用户] SELECT user FROM userlist zH with(nolock) where zH.user in (case when zh.trait='1' then ('B', 'HO', 'KO', 'PL','APP','2A','2B') else ('O') end) 来自userlist zH WITH(NOLOCK) 其中(zh.trait='1' 以及('B','HO','KO','PL',

这句话能跟在哪里的情况下起作用吗?我希望你明白我的意思。谢谢。

选择[用户]
SELECT user 
FROM userlist zH with(nolock) 
where zH.user in (case when zh.trait='1' then ('B', 'HO', 'KO', 'PL','APP','2A','2B') else ('O') end)
来自userlist zH WITH(NOLOCK) 其中(zh.trait='1' 以及('B','HO','KO','PL','APP','2A','2B'中的zH.[user] ) 或(zh.trait'1' 和('O'中的zH.[user] )
您可以使用嵌套的case语句,如

SELECT  [user]
FROM    userlist zH WITH ( NOLOCK )
WHERE   ( zh.trait = '1'
          AND zH.[user] IN ( 'B', 'HO', 'KO', 'PL', 'APP', '2A', '2B' )
        )
        OR ( zh.trait <> '1'
             AND zH.[user] IN ( 'O' )
           )

如果行得通就执行,然后超级..这个答案出现在低质量审查队列中,可能是因为您没有解释某些内容。如果你解释了这一点(在你的答案中),你就更有可能获得更多的选票,提问者实际上学到了一些东西!
SELECT user 
FROM userlist zH with(nolock) 
where 'true' = 
   (case when zh.trait = '1' 
       then 
           case when zH.user in ('B', 'HO', 'KO', 'PL','APP','2A','2B') 
               then 'true'
               else 'false'
           end
       else 
           case when zH.user = 'O'
               then 'true'
               else 'false'
           end
   end)