Using Case Statement in Where Clause (with column)

12,750

Solution 1

It sounds like you want your CASE expression to be:

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

Solution 2

You don't need CASE, you can use OR:

select * from table 
where (column1 >= column2 and column1 > 3)
   or (column1 <  column2 and column2 > 3) 
Share:
12,750
Pisagor
Author by

Pisagor

Updated on June 04, 2022

Comments

  • Pisagor
    Pisagor almost 2 years

    I want to use a case statement in a where clause. But the where clause change depends on my equation.

    For example:

    Table

    ID Column1  Column2
    1    2         3 
    2    4         1
    3    5         4
    4    4         7
    

    Query

    select * from table
    where (case when column1>=column2 then column2>3 else column1>3 end)
    

    Expected output

    ID Column1  Column2
    3    5         4
    4    4         7