串聯列說我有下面的數據集如何操縱SQL
WITH dataset (hno,sorder,level,dummy,maxorder) AS
(
SELECT 1, 1, 'val1', 'NULL1', 5 FROM dual UNION ALL
SELECT 1, 2, 'val2', 'NULL2', 5 FROM dual UNION ALL
SELECT 1, 3, 'val3', 'NULL3', 5 FROM dual UNION ALL
SELECT 1, 4, 'val4', 'NULL4', 5 FROM dual UNION ALL
SELECT 1, 5, 'val5', 'NULL5', 5 FROM dual)
SELECT *
FROM dataset;
HNO SORDER LEVEL DUMMY MAXORDER
1 4 val4 NULL4 5
1 2 val2 NULL2 5
1 3 val3 NULL3 5
1 1 val1 NULL1 5
1 5 val5 NULL5 5
,我需要有另一列稱爲TEXT
HNO SORDER LEVEL DUMMY MAXORDER TEXT
1 4 val4 NULL4 5 val1,val2,val3,val4,NULL5
1 2 val2 NULL2 5 val1,val2,NULL3,NULL4,NULL5
1 3 val3 NULL3 5 val1,val2,val3,NULL4,NULL5
1 1 val1 NULL1 5 val1,NULL2,NULL3,NULL4,NULL5
1 5 val5 NULL5 5 val1,val2,val3,val4,val5
的想法是操縱動態佔位符的SQL。因此,如果排序順序是1 ... n之間的範圍,那麼對於SORDER
值x,我需要將列1中的值從LEVEL
返回給x,然後從x + 1中的虛擬值返回到n,並將所有值連接爲逗號分離的值,最重要的是全部在一個SQL中。這個最大訂單可以是任何數字,它不是固定的。 WX2缺乏遞歸CTE,這使得它很難。
任何指針?
我建議你創造出將根據sorder產生連結值標量函數作爲輸入參數。否則,我無法找到一種方法來創建一組數據的邏輯。 –
您是否需要僅爲一行返回TEXT列(SORDER = X),還是需要爲所有行生成它? –
需要爲所有行生成 – SriniV