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 * WHERE CASE |
- 您的两个 when 条件相同。
- CASE 是一个表达式,它产生一个标量值,而不是一个布尔结果。
- 您能否澄清一下您要达到的目标?
- 此答案中显示了在 where 或 on 子句中使用 CASE 的”正确”方式。正如其他人所表明的,有比 CASE 更好的方法来解决问题。
不要在 where 子句中使用 case。特别是当它可以轻松更换时:
1
|
WHERE (@paramView = ‘YTD’ AND @paramTime = ‘2020M1’ AND [sTime] = ‘2020M1’)
|
你的两个 when 条件是一样的,所以这相当于你问题中的逻辑。
您可以使用 or.
添加其他逻辑
假设条件集实际上是不同的(在您展示的代码中不是这种情况,但对您的问题有意义),请使用 or:
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’) ) |
- 谢谢,这就是我自己的地方,我希望能够纯粹从可读性的angular使用案例,但解决方案过于复杂我的问题是我需要相当多的 OR 来完成对帐单用于交易的 YTD 和 QTD 视图。 17个左右。不幸的是,我的双手在数据源方面受到束缚。这是迄今为止的交易平面表,因此希望对选择进行一些参数化。
来源:https://www.codenong.com/60511799/