因此,作為背景,我的公司正在舉辦一場比賽。客戶購買的單位數量決定了他們參加比賽的數量。
我們必須提供串列的資料合作伙伴想要一個包含重復值的所有帳號的串列,以確定一個人有多少條目。
所以基本上,我有一個包含 ACCOUNT_NBR 和 UNITS 的資料集。如果客戶 12345 有 6 個單位,我希望他們的帳號在最終資料集中出現 6 次。
對不起,如果這沒有意義,如果需要,會很樂意澄清。
uj5u.com熱心網友回復:
從 Oracle 12 開始,您可以使用:
SELECT account_nbr
FROM table_name t
CROSS JOIN LATERAL (
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= t.units
)
在 Oracle 12 之前,您可以使用:
SELECT account_nbr
FROM table_name t
CROSS JOIN TABLE(
CAST(
MULTISET(
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= t.units
) AS SYS.ODCINUMBERLIST
)
)
其中,對于樣本資料:
CREATE TABLE table_name (account_nbr, units) AS
SELECT 1111, 3 FROM DUAL UNION ALL
SELECT 2222, 1 FROM DUAL UNION ALL
SELECT 3333, 4 FROM DUAL UNION ALL
SELECT 4444, 2 FROM DUAL;
兩個輸出:
ACCOUNT_NBR 1111 1111 1111 2222 3333 3333 3333 3333 4444 4444
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/421778.html
標籤:
上一篇:如何對SQL中的新CASEStatement列做進一步分析?
下一篇:創建多個存盤程序的腳本
