WITH T(a1, a2, jumsu, name) AS ( SELECT '1','1','10','김1' FROM DUAL UNION ALL SELECT '1','2','8','김1' FROM DUAL UNION ALL SELECT '1','1','8','김2' FROM DUAL UNION ALL SELECT '1','2','7','김2' FROM DUAL UNION ALL SELECT '1','1','10','김3' FROM DUAL UNION ALL SELECT '1','2','9','김3' FROM DUAL ) SELECT a1, a2, MAX(DECODE(gn, 1, jumsu)) AS val1, MAX(DECODE(gn, 2, jumsu)) AS val2, MAX(DECODE(gn, 3, jumsu)) AS val3 FROM ( SELECT T.*, ROW_NUMBER() OVER(PARTITION BY A1, A2 ORDER BY ROWNUM) AS gn FROM T ) GROUP BY a1, a2 ORDER BY a2, a2