我的情况很复杂。我想在“where子句”上写一个包含“case when”条件的SQL查询。
就像那样:
SELECT *
FROM <table>
WHERE
<Column1> in
CASE <Column2>
WHEN 1 THEN ('OP', 'CL')
WHEN 0 THEN ('RE', 'ST')
END
Column1必须为“in”,而不是“=”。因为Column1的条件有多个值。该查询返回“',''附近的语法不正确。”错误。
你可以给我任何建议吗? (抱歉我的英语不好。) 编辑:我想我误解了。如果Column2为1,则条件必须类似于“IN('OP','CL')”否则Column1为2,条件必须类似于“IN('RE','ST')”。答案 0 :(得分:6)
您不需要CASE
表达式,您可以像这样使用OR
:
SELECT *
FROM <table>
WHERE (Column2 = 1 AND Column1 IN ('OP', 'CL')) OR
(Column2 = 0 AND Column1 IN ('RE', 'ST'))
答案 1 :(得分:-1)
Select * from table where <Column1> in (Select case <Column2> when 1 then ('OP','CL') when
0 then ('RE','ST'))