WITH t AS ( SELECT 1 pk, 2 c1, 3 c2 FROM dual UNION ALL SELECT 2, 3, 4 FROM dual ) -- Union All -- SELECT pk, 1 lv, c1 FROM t UNION ALL SELECT pk, 2 lv, c2 FROM t ORDER BY pk, lv ; -- 2건 짜리 집합과 Cross Join 하여 행 복제 SELECT pk , lv , DECODE(lv, 1, c1, 2, c2) c FROM t , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 2) copy_t ORDER BY pk, lv ; -- Unpivot -- SELECT * FROM t UNPIVOT (c FOR gb IN (c1, c2)) ORDER BY pk, gb ;