ORACLE/SQL

피벗 (행->열)

argoLee 2017. 12. 22. 17:44

-------------------------------------------------------------------------------------------

PIVOT 

-------------------------------------------------------------------------------------------


WITH TEMP01 AS

(

SELECT '2014' AS YEAR, 1 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 2 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 3 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 4 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 5 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 6 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 7 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 8 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 9 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 10 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 11 AS MONTH FROM DUAL

UNION ALL

SELECT '2014' AS YEAR, 12 AS MONTH FROM DUAL

UNION ALL

SELECT '2015' AS YEAR, 8 AS MONTH FROM DUAL

UNION ALL

SELECT '2015' AS YEAR, 9 AS MONTH FROM DUAL

UNION ALL

SELECT '2016' AS YEAR, 10 AS MONTH FROM DUAL

UNION ALL

SELECT '2017' AS YEAR, 11 AS MONTH FROM DUAL

UNION ALL

SELECT '2018' AS YEAR, 12 AS MONTH FROM DUAL

)

SELECT *

  FROM TEMP01

 PIVOT ( MAX(MONTH)

         FOR MONTH IN (1 AS M1,2 AS M2,3 AS M3,4 AS M4,5 AS M5,6 AS M6,7 AS M7,8 AS M8,9 AS M9,10 AS M10,11 AS M11,12 AS M12)

       );




-------------------------------------------------------------------------------------------

LISTAGG 

-------------------------------------------------------------------------------------------


SELECT a.c1,

LISTAGG (a.c2, ',') WITHIN GROUP (ORDER BY a.c2) AS c2

 FROM t1 a

GROUP BY a.c1;

 C1 C2          
--- ------------
  1 01          
  2 02,03       
  3 04,04,05,06