user1538517
user1538517

Reputation: 7

How to use CASE here?

I have a table having 6 columns(A,B,C,D,E,F). If a fixed column, lets say D is not null, I want to fetch 3 columns D,E,F; else if D is null I want to fetch other 3 columns A,B,C.

Am trying to use this but not able to proceed.

SELECT 
    CASE WHEN D IS NOT NULL 
    THEN SELECT D, E, F
    ELSE
    SELECT A,B,C 
     END
FROM Mytable.

Any pointers?

Upvotes: 0

Views: 39

Answers (2)

Hamlet Hakobyan
Hamlet Hakobyan

Reputation: 33381

Try this:

SELECT
   CASE WHEN D IS NULL THEN A ELSE D END as C1,
   CASE WHEN D IS NULL THEN B ELSE E END as C2,
   CASE WHEN D IS NULL THEN C ELSE F END as C3
FROM tbl

Upvotes: 0

D Stanley
D Stanley

Reputation: 152594

You can do the check in each column:

SELECT 
   CASE WHEN D IS NOT NULL THEN D ELSE A END, 
   CASE WHEN D IS NOT NULL THEN E ELSE B END,
   CASE WHEN D IS NOT NULL THEN F ELSE C END
FROM Mytable

or use a UNION

SELECT A,B,C
FROM Mytable
WHERE D IS NULL
UNION ALL
SELECT D,E,F
FROM Mytable
WHERE D IS NOT NULL

Upvotes: 3

Related Questions