在Oracle中使用SELECT语句的情况

问题描述 投票:0回答:1

有人知道我是否可以在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

oracle case case-when
1个回答
0
投票

我认为这应该可以解决您的需求:

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))
© www.soinside.com 2019 - 2024. All rights reserved.