簡體   English   中英

在CASE表達式的ELSE內合並多行

[英]Combining multiple rows inside the ELSE of a CASE expression

SELECT  CASE WHEN inputNumber != 0 THEN  inputNumber 
             ELSE  111             
        END as Column_Name
FROM dual

大家好, inputNumber是input,基於此我必須創建output,如果其為0,則我的結果應包含三行, inputNumberinputNumber

上面的查詢正在工作,但我想在其他部分也添加222、333,請提出建議,以便結果將是總共3行,其中輸入等於0

所以現在,如果輸入為0,則輸出為

Column_Name
  111

我想做到

Column_Name
  111
  222
  333

這是一種方法:

SELECT CASE WHEN :inputnumber = 0 THEN 111 * LEVEL ELSE :inputnumber END column_name
FROM   dual
CONNECT BY LEVEL <= CASE WHEN :inputnumber = 0 THEN 3 ELSE 1 END;

:inputnumber = 0時:

COLUMN_NAME
-----------
        111
        222
        333

與:inputnumber = 1:

COLUMN_NAME
-----------
          1

丑陋,但應該可以:

SELECT  CASE WHEN inputNumber != 0 THEN  inputNumber 
             ELSE  111             
        END as Column_Name
FROM dual
UNION ALL 
SELECT 222 
FROM dual 
WHERE inputNumber = 0
UNION ALL 
SELECT 333
FROM dual 
WHERE inputNumber = 0

更新:

也許更具可讀性:

SELECT  inputNumber  as Column_Name
FROM dual
WHERE inputNumber != 0
UNION ALL 
SELECT 111
FROM dual 
WHERE inputNumber = 0
UNION ALL 
SELECT 222 
FROM dual 
WHERE inputNumber = 0
UNION ALL 
SELECT 333
FROM dual 
WHERE inputNumber = 0

PS:抱歉,我沒有對此進行測試...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM