【发布时间】:2018-04-05 14:00:24
【问题描述】:
我正在使用的查询的表示如下。
SELECT T1.Col3
FROM Table1 T1
WHERE T1.Col1 IN ('Value1','Value2')
AND (CASE
WHEN T1.Col1 = 'Value1'
THEN T1.Col2 IN ('Value3','Value4','Value5')
WHEN T1.Col1 = 'Value2'
THEN T1.Col2 IN ('Value6','Value7','Value8')
END
)
由于某种原因,我总是在第二个左右出现语法错误。 我在两个 IN 语句中的第一个逗号处也出现语法错误,但在第二个中没有。并不是说它应该有所作为,我还尝试将嵌套的 IN 语句更改为 OR 语句,如下所示:
THEN (T1.COL2 = 'Value3') OR (T1.COL2 = 'Value4') OR (T1.COL2 = 'Value5')
相反,我在第一个 OR 语句周围出现语法错误。
我之前在 WHERE 子句中使用过 CASE,但它只返回一个值。我在第一个逗号或 OR 语句中遇到语法错误这一事实让我怀疑返回多个值是不可能的。
我们将不胜感激您对这个问题的任何看法。
附:我已经通过创建一个临时表并在其上运行条件 DELETE 语句来解决问题,这与我尝试使用上面的 CASE 语句实现的结果相同。不过我很好奇,想知道这个问题所涉及的其他方法是否可行。
【问题讨论】:
标签: sql-server tsql case where