SQL> WITH t AS
2 (SELECT LEVEL val FROM dual
3 CONNECT BY LEVEL<10)
4 SELECT trim(both ',' FROM a.val_list) val_list
5 FROM
6 (SELECT SYS_CONNECT_BY_PATH (val, ',') || ',' val_list
7 FROM t
8 CONNECT BY val > PRIOR val) a, t b
9 WHERE INSTR (a.val_list, ',' || b.val || ',') > 0
10 GROUP BY a.val_list
11 HAVING SUM (b.val) <= 25
12 ORDER BY 1;
VAL_LIST
--------------------------------------------------------------------------------
1
1,2
1,2,3
1,2,3,4
1,2,3,4,5
1,2,3,4,5,6
1,2,3,4,5,7
1,2,3,4,5,8
1,2,3,4,5,9
1,2,3,4,6
1,2,3,4,6,7
...............
6,8,9
6,9
7
7,8
7,8,9
7,9
8
8,9
9
323 rows selected |