我是新手,所以请原谅我这是一个愚蠢的问题。
是否可以使用带有List的CASE语句作为结果?
WHERE
Service.Closed_Flag = 'False'
AND Service.Board_name = CASE
WHEN @SORT = 'True'
THEN (@BOARD)
ELSE Service.Board_name
END
@SORT是布尔
@BOARD是一个下拉列表,其中包含允许多个选择的选项
上述代码工作正常,除非我为@BOARD参数选择多个选项以产生列表。
我希望我能在CASE声明中使用IN,那么(@BOARD)?
解: 在发布后不久我找到了解决问题的方法,似乎总是发生在我身上。我不能回答我的问题,直到另外7个小时过去是我的解决方案:
CASE仅返回标量值。
我将我的陈述调整为以下解决了我的问题:
WHERE
Service.Closed_Flag = 'False'
AND ((@SORT = 'True' AND Service.Board_name IN (@BOARD))
OR
(@SORT = 'False' AND Service.Board_name = Service.Board_name))
答案 0 :(得分:0)
我发布后不久就找到了解决问题的方法,似乎总是发生在我身上。
CASE仅返回标量值。
我将我的陈述调整为以下解决了我的问题:
WHERE
Service.Closed_Flag = 'False'
AND (
(@SORT = 'True' AND Service.Board_name IN (@BOARD))
OR
(@SORT = 'False' AND Service.Board_name = Service.Board_name)
)