Sql &引用;在;CASE条件WHEN on WHERE子句?

Sql &引用;在;CASE条件WHEN on WHERE子句?,sql,tsql,where-clause,case-when,Sql,Tsql,Where Clause,Case When,我的情况很复杂。我想写一个sql查询,包括“where子句”上的“case-when”条件 就这样, SELECT * FROM <table> WHERE <Column1> in CASE <Column2> WHEN 1 THEN ('OP', 'CL') WHEN 0 THEN ('RE', 'ST') END 选择* 从…起 哪里 在里面 案例 当1时,则('OP','CL') 当0时,则('RE','ST') 结束

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

就这样,

SELECT *
FROM <table>
WHERE
<Column1> in
   CASE <Column2>
      WHEN 1 THEN ('OP', 'CL') 
      WHEN 0 THEN ('RE', 'ST')
END
选择*
从…起
哪里
在里面
案例
当1时,则('OP','CL')
当0时,则('RE','ST')
结束
第1列必须是“in”,而不是“=”。因为Column1的条件有多个值。该查询返回“靠近','的语法不正确”错误

你能给我一些建议吗?(对不起,我的英语不好。)


编辑:我想我误解了。如果第2列是1,条件必须像“IN('OP','CL')”那样,否则第1列是2,条件必须像“IN('RE','ST')”。

你不需要一个
大小写
表达式,你可以像这样使用

SELECT *
FROM <table>
WHERE (Column2 = 1 AND Column1 IN ('OP', 'CL')) OR
    (Column2 = 0 AND Column1 IN ('RE', 'ST'))
选择*
从…起
其中(第2列=1,第1列位于('OP','CL'))或
(列2=0,列1位于('RE','ST'))
从中的表格中选择*(选择case when 1,然后('OP','CL')when
0然后('RE','ST'))

+1,但请修正该声明,它与OPs声明不一致。我想我误解了。如果Column2是1,条件必须像“IN('OP','CL')”那样,否则Column1是2,条件必须像“IN('RE','ST')”@Les-是的,我有向后的Column1和Column2;编辑。Downvoter,请检查。我需要根据第二列编写查询第一列(带“in”条件)。现在我尝试了,它对我有效。(起初,我写错了专栏。)。谢谢大家。这个代码不起作用。也许它在以前版本的SQL Server中工作,但我想我正在运行2008。但它不起作用。
Select * from table where <Column1> in (Select case <Column2> when 1 then ('OP','CL') when
0 then  ('RE','ST'))