WITH t AS (SELECT LEVEL lv FROM DUAL CONNECT BY LEVEL < 19) SELECT MAX (val1) val1, MAX (val2) val2 FROM (SELECT CASE WHEN MOD (lv, 10) IN (1, 2, 3, 4, 5) THEN lv ELSE NULL END val1 , CASE WHEN MOD (lv, 10) IN (6, 7, 8, 9, 0) THEN lv ELSE NULL END val2 , TRUNC ((lv - 1) / 10) grp1, decode(MOD (lv, 5),0,5,MOD (lv, 5)) grp2 FROM t) GROUP BY grp1, grp2 ORDER BY grp1, grp2 맞는지 모르겠네요. 실제 데이터 앞에 rownum 같은 걸로 순번 매기고 하시면 될 듯합니다.