WITH T AS ( SELECT '1' AS COUNT1 ,'201303' AS YMD FROM DUAL UNION ALL SELECT '2' AS COUNT1 ,'201304' AS YMD FROM DUAL UNION ALL SELECT '3' AS COUNT1 ,'201305' AS YMD FROM DUAL UNION ALL SELECT '4' AS COUNT1 ,'201306' AS YMD FROM DUAL UNION ALL SELECT '5' AS COUNT1 ,'201207' AS YMD FROM DUAL ) SELECT SUM(COUNT1),YMD FROM T GROUP BY YMD ORDER BY YMD; SUM YMD 5 201207 1 201303 2 201304 3 201305 4 201306 이렇게 값이 나오는걸 null 201201 null 201202 null 201203 null 201204 null 201205 null 201206 5 201207 ....중략 null 201301 null 201302 1 201303 .... 이런식으로 표현하고 싶은데 어떤식으로 하면 될까요?
-- 좀 깔끔치 못하게 나왔습니다. WITH T AS ( SELECT '1' AS COUNT1 ,'201303' AS YMD FROM DUAL UNION ALL SELECT '2' AS COUNT1 ,'201304' AS YMD FROM DUAL UNION ALL SELECT '3' AS COUNT1 ,'201305' AS YMD FROM DUAL UNION ALL SELECT '4' AS COUNT1 ,'201306' AS YMD FROM DUAL UNION ALL SELECT '5' AS COUNT1 ,'201207' AS YMD FROM DUAL ) , T2 AS ( SELECT a.YMD || LPAD(b.lv,2,'0') YMD FROM (SELECT DISTINCT SUBSTR(YMD,1,4) YMD FROM T ) a , (SELECT LEVEL lv FROM DUAL CONNECT BY LEVEL <= 12 ) b ) SELECT a.CNT , b.YMD FROM (SELECT SUM(COUNT1) CNT,YMD FROM T GROUP BY YMD ORDER BY YMD )a , T2 b WHERE b.YMD = a.YMD(+) ORDER BY b.YMD