以下のデータセットがあるとします
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の場合LEVEL
、1 から x の列から値を返し、次に x+1 から n のダミーから値を返し、それらすべてをコンマ区切りの値として連結する必要がありますそして最も重要なことは、すべてが 1 つの SQL に含まれていることです。この最大順序は任意の数にすることができ、固定されていません。WX2 には再帰的な CTE がないため、困難です。
ポインタはありますか?