假设我有以下数据集
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之间的范围,那么对于SQL值x,我需要从列LEVEL返回1到x的值,然后从dummy for x+1返回值到n,所有这些值都以逗号分隔值的形式连接在一起,最重要的是,所有这些值都在一个SQL值中。这个最大顺序可以是任何数字,并且它不是固定的。WX2缺少递归的CTE,这使得它很难实现。
有什么建议吗?
https://stackoverflow.com/questions/38247087
复制相似问题