SQL Where Case with multiple criteria error
我正在尝试编写带有条件 where 子句的语句。问题是由于需要使用 IN 返回多个条件。目前我正在返回错误:
Incorrect syntax near the keyword 'IN'.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /****** Script for SelectTopNRows command from SSMS ******/ DECLARE @paramTime VARCHAR(50); DECLARE @paramView VARCHAR(50); SET @paramTime = '2020M2'; SET @paramView = 'YTD'; SELECT * FROM [dbo].[vBiB_AllAccounts] WHERE [sTime] = CASE WHEN @paramView = 'YTD' AND @paramTime = '2020M1' THEN '2020M1' WHEN @paramView = 'YTD' AND @paramTime = '2020M1' THEN IN('2020M1','2020M2') END |
不要在
1 | WHERE (@paramView = 'YTD' AND @paramTime = '2020M1' AND [sTime] = '2020M1') |
你的两个
您可以使用
添加其他逻辑
假设条件集实际上是不同的(在您展示的代码中不是这种情况,但对您的问题有意义),请使用
1 2 3 4 5 6 7 8 9 10 | WHERE ( @paramView = 'YTD' AND @paramTime = '2020M1' AND [sTime] = '2020M1' ) OR ( @paramView = 'YTD' AND @paramTime = '2020M1' AND [sTime] IN ('2020M1','2020M2') ) |