T-SQL.WHERE子句中的CASE表达式使用IN运算符

Sta*_*vas 0 sql t-sql sql-server case where

如果用户输入800 @WorkShop,则应返回所有具有800个车间ID和900个车间ID的记录.

如果用户传递任何其他ID,@WorkShop它应该只返回选择@WorkShopId的记录.

我试过以下:

SELECT *
FROM Test
WHERE Workshop IN ( 
                    CASE 
                        WHEN @WorkShop = N'800' THEN N'900' AND N'800' 
                        ELSE @WorkShop 
                    END 
                    ) 
Run Code Online (Sandbox Code Playgroud)

这会返回一个错误:

Incorrect syntax near the keyword 'and'.
Run Code Online (Sandbox Code Playgroud)

所以总之如果用户传递800作为@WorkShop参数它应该返回如下内容:

Workshop IN ('800', '900')
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 8

这是你想要的吗?

SELECT *
FROM Test
WHERE ( @WorkShop = '800' AND  Workshop IN('800', '900') )
OR @WorkShop =  Workshop
Run Code Online (Sandbox Code Playgroud)