[英]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,則我的結果應包含三行, inputNumber
為inputNumber
上面的查詢正在工作,但我想在其他部分也添加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.