Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I write nested CASE statement based on query below?

I am using CASE statement to create column Quoted. So its gonna display value 1 or 0.

But then column DisplayStatus have to be created based on the condition of previous column Quoted.

Seems like I should use nested CASE statement in this situation. But I cannot come up with right query.

SELECT 
       case when isnull(grouptt.controlno,0) <>0 AND  isnull(vwR.Premium,0) > 0 then 
      cast( 1 as bit)
      else cast( 0 as bit)
      end as Quoted,

      CASE 
           WHEN a.DisplayStatus = 'LOST' AND quoted=1  THEN 'Quoted_Lost'
           WHEN a.DisplayStatus = 'DECLINED' AND quoted=1  THEN 'Quoted_NotTakenUp'
           WHEN a.DisplayStatus = 'NOT TAKEN UP' AND quoted=1  THEN 'Quoted_Lost'
           ELSE
                  a.DisplayStatus
      END
      DisplayStatus
    FROM MyTable 
like image 359
Serdia Avatar asked Jan 20 '26 17:01

Serdia


1 Answers

Use a nested CASE expression

SELECT 
    CASE 
        WHEN ISNULL(grouptt.controlno, 0) <> 0 AND ISNULL(vwR.Premium, 0) > 0 THEN CAST(1 AS BIT)
        ELSE CAST(0 AS BIT)
    END AS Quoted,
    CASE
        WHEN ISNULL(grouptt.controlno, 0) <> 0 AND ISNULL(vwR.Premium, 0) > 0  THEN  
            CASE
                    WHEN a.DisplayStatus = 'LOST' THEN 'Quoted_Lost'
                    WHEN a.DisplayStatus = 'DECLINED' THEN 'Quoted_NotTakenUp'
                    WHEN a.DisplayStatus = 'NOT TAKEN UP' THEN 'Quoted_Lost'
                    ELSE a.DisplayStatus
            END
        ELSE a.DisplayStatus
    END AS DisplayStatus
FROM MyTable 
like image 109
Felix Pamittan Avatar answered Jan 22 '26 15:01

Felix Pamittan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!