Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conditions in Where Clauses based on a flag

Tags:

sql

tsql

Can I use a flag to select different WHERE clause? Something like this.

SELECT  fields
 from T3 t3 
left outer join T1 t1 on T1.Id=t2.Id
WHERE 
    CASE 
        WHEN @Status <> 1 
        THEN (t3.Id = @SId AND sh.StatusId = 3 AND k.StatusId = 1)
        ELSE t2.Id = @SID AND  t2.StatusID = 12
GROUP BY whatever
like image 366
user424134 Avatar asked Feb 21 '23 00:02

user424134


1 Answers

preferred way:

    WHERE
    (@Status <> 1 AND t3.Id = @SId AND sh.StatusId = 3 AND k.StatusId = 1)
    OR (t2.Id = @SID AND t2.StatusID = 12)

or this is a little easier to read case statement:

WHERE
CASE WHEN @Status <> 1 
       AND t3.Id = @SId 
       AND sh.StatusId = 3 
       AND k.StatusId = 1 THEN 1
WHEN t2.Id = @SID 
       AND t2.StatusID = 12 THEN 1
ELSE 0 END = 1
like image 69
JBrooks Avatar answered Mar 05 '23 23:03

JBrooks