1

How do I rewrite this SQL statement to do what I need?

 SELECT * FROM TABLE 
    WHERE COLUMN_NAME_1 IN (CASE 
        WHEN COLUMN_NAME_2 = 'X' THEN 'A' 
        WHEN COLUMN_NAME_2 = 'Y' THEN 'B', 'C' END)

Obviously I can't return multiple values from a CASE clause... so how else could I write this? I am pretty sure I am slow today because this seems so easy ....

0

1 Answer 1

3
 SELECT * FROM Table WHERE
    (COLUMN_NAME_2 = 'X' AND COLUMN_NAME_1 = 'A') OR
    (COLUMN_NAME_2 = 'Y' AND COLUMN_NAME_1 IN ('B', 'C'))

or

 SELECT * FROM Table WHERE COLUMN_NAME_2 = 'X' AND COLUMN_NAME_1 = 'A'
 UNION ALL
 SELECT * FROM Table WHERE COLUMN_NAME_2 = 'Y' AND COLUMN_NAME_1 IN ('B', 'C')

This presumes that you only want results with X or Y in COLUMN_NAME_2. If you want other rows it's not possible to tell which ones from your original SQL.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.