4

我的情况很复杂。我想编写一个 sql 查询,包括“where 子句”上的“case when”条件。

就像这样:

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')”。

4

2 回答 2

6

你不需要一个CASE表达式,你可以OR像这样使用:

SELECT *
FROM <table>
WHERE (Column2 = 1 AND Column1 IN ('OP', 'CL')) OR
    (Column2 = 0 AND Column1 IN ('RE', 'ST'))
于 2012-09-14T12:27:58.437 回答
-1
Select * from table where <Column1> in (Select case <Column2> when 1 then ('OP','CL') when
0 then  ('RE','ST'))
于 2012-09-14T12:30:22.050 回答