在WHERE条款中的情况下的“IN”条件?

时间:2012-09-14 12:26:30

标签: sql tsql where-clause case-when

我的情况很复杂。我想在“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')”。

2 个答案:

答案 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'))