0

我是新手,所以如果这是一个愚蠢的问题,请原谅。

是否可以使用带有列表的 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,THEN 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))
4

1 回答 1

0

I found a solution to my problem shortly after posting, always seems to happen to me.

CASE returns a scalar value only.

I adjusted my statement to the following which solved my problem:

WHERE
Service.Closed_Flag = 'False'
AND (
     (@SORT = 'True' AND Service.Board_name IN (@BOARD))
   OR
     (@SORT = 'False' AND Service.Board_name = Service.Board_name)
    )
于 2013-10-14T13:17:27.797 回答