问题

是否可以在IN子句中使用CASE语句?

这是我试图正确编译的简化版本:

 SELECT * FROM MyTable 
WHERE StatusID IN (
CASE WHEN @StatusID = 99 THEN (5, 11, 13)
ELSE (@StatusID) END )
 

谢谢!

  最佳答案

CASE只返回标量值.您可以这样做. (我假设,根据您的例子,当@StatusID = 99时,99的StatusID值不匹配.)

 select *
from MyTable
where (@StatusID = 99 and StatusID in (5, 11, 13))
    or (@StatusID <> 99 and StatusID = @StatusID)
 

  相同标签的其他问题

sqlsql-serversql-server-2008tsql