有人知道我是否可以在Oracle中的SELECT语句中使用CASE WHEN THEN吗?
我正在尝试用CASE重写我的查询,任何人都可以帮助我吗?
SELECT code as CUST_COUNTRY FROM (
SELECT id, code FROM (
(
SELECT id, code1, code2, code3, code4
FROM cust
WHERE id = '2'
)
UNPIVOT(
code FOR COUNTRY
IN (code1, code2, code3, code4)
) TAB1
))
UNION
SELECT 'NO VALUES' as CUST_COUNTRY from cust WHERE
(code1 is NULL and code2 IS NULL and code3 is NULL and code4 IS NULL)
and id = '2'
我想要类似的东西
SELECT CASE WHEN (code1 is NULL and code2 IS NULL and code3 is NULL and code4 IS NULL) THEN 'NO VALUES'
ELSE (SELECT code as CUST_COUNTRY FROM (
SELECT id, code FROM (
(
SELECT id, code1, code2, code3, code4
FROM cust
WHERE id = '2'
)
UNPIVOT(
code FOR COUNTRY
IN (code1, code2, code3, code4)
) TAB1
))) END AS 'AAA' FROM CUST WHERE ID = '2'
为什么我不能在多行中使用CASE WHEN?为此有任何解决方法吗?
请参阅SQL提琴http://sqlfiddle.com/#!4/a88e6/13。
我认为这应该可以解决您的需求:
SELECT code AS CUST_COUNTRY
FROM (SELECT id, code1, code2, code3, code4,
decode(code1||code2||code3||code4, NULL, 'No Values', NULL) AS code5
FROM cust
WHERE id = '1')
UNPIVOT(code FOR COUNTRY IN (code1, code2, code3, code4, code5))