WITH t(c1, c2, c3) AS ( SELECT 1, 'a', 'a' FROM dual UNION ALL SELECT 2, 'aba' , 'fasf' FROM dual UNION ALL SELECT 5, 'asf' , 'asff' FROM dual UNION ALL SELECT 6, 'sfs' , 'sfasf'FROM dual UNION ALL SELECT 7, 'asff', 'aasf' FROM dual UNION ALL SELECT 10, 'asff', 'asff' FROM dual ) SELECT * FROM (SELECT LEVEL lv FROM (SELECT MAX(c1) n FROM t) CONNECT BY LEVEL <= n ) a , t b WHERE a.lv = b.c1(+) ORDER BY a.lv ;