I need a nested case structure in a query which the outer case uses IN operator. I used same inner case part in all conditions of outer case as shown in the following example:
SELECT
CASE
WHEN
(CASE
WHEN expression1 THEN value1
WHEN expression2 THEN value2
ELSE value3
END) in (1, 2)
THEN 'A'
WHEN
(CASE
WHEN expression1 THEN value1
WHEN expression2 THEN value2
ELSE value3
END) in (3, 4)
THEN 'B'
ELSE 'C'
END
That example works well but I want to use it as follows if possible:
SELECT
CASE
(CASE
WHEN expression1 THEN value1
WHEN expression2 THEN value2
ELSE value3
END)
WHEN
an_alias_if_necessary in (1, 2)
THEN 'A'
WHEN
an_alias_if_necessary in (3, 4)
THEN 'B'
ELSE 'C'
END
The following example of that nested case which does not have IN operator works well. Is it possible to use same structure with IN operator ?
SELECT
CASE
(CASE
WHEN expression1 THEN value1
WHEN expression2 THEN value2
ELSE value3
END)
WHEN asked_value1 THEN 'A'
WHEN asked_value2 THEN 'B'
ELSE 'C'
END