我想在where子句中使用case语句。但where子句的改变取决于我的等式。
例如:
表格
ID Column1 Column2
1 2 3
2 4 1
3 5 4
4 4 7
查询
select * from table
where (case when column1>=column2 then column2>3 else column1>3 end)
预期输出
ID Column1 Column2
3 5 4
4 4 7
答案 0 :(得分:4)
听起来您希望CASE
表达式为:
SELECT *
FROM dbo.YourTable
WHERE CASE
WHEN column1 >= column2 AND column1 > 4 THEN 1
WHEN column1 < column2 AND column2 > 4 THEN 1
ELSE 0
END = 1
答案 1 :(得分:1)
您不需要CASE
,您可以使用OR
:
select * from table
where (column1 >= column2 and column1 > 3)
or (column1 < column2 and column2 > 3)
答案 2 :(得分:0)
像
这样的东西select *
from table
where (
case
when column1>=column2
then column1
else column2
end > 4
)
答案 3 :(得分:0)
If else
可以使用Or
&amp; And
子句中的where
运算符。试试这个。
SELECT *
FROM tablename
WHERE ( column1 >= column2
AND column1 > 4 )
OR ( column1 < column2
AND column2 > 4 )
答案 4 :(得分:0)
试试这个:
SELECT *
FROM tableA A
WHERE (CASE WHEN A.column1 >= A.column2 THEN A.column2
ELSE A.column1
END) > 3