在Where子句中使用Case语句(带列)

时间:2015-01-06 13:14:05

标签: sql sql-server select case where

我想在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

5 个答案:

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