첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ PIVOT 함수를 사용해 동적으로 집계하는 방법을 보여준다.

 

▶ 예제 코드 (SQL)

WITH SOURCE_TABLE AS
(
    SELECT (TO_DATE('20140101', 'YYYYMMDD') + LEVEL - 1) SOURCE_DATE
    FROM DUAL
    CONNECT BY LEVEL - 1 <= TO_DATE('20141231', 'YYYYMMDD') - TO_DATE('20140101', 'YYYYMMDD')
)
SELECT *
FROM
(
    SELECT
        TO_CHAR(SOURCE_DATE,'MM') || '월' TARGET_MONTH
       ,DECODE(TO_CHAR(SOURCE_DATE, 'D'), '1', '일', '2', '월', '3', '화', '4', '수', '5', '목', '6', '금', '7', '토') WEEK_DAY
       ,SOURCE_DATE
    FROM SOURCE_TABLE
) PIVOT(COUNT(SOURCE_DATE) FOR WEEK_DAY IN ('일', '월', '화', '수', '목', '금', '토'))
ORDER BY TARGET_MONTH;

/*
TARGET_MONTH '월' '화' '수' '목' '금' '토' '일'
------------ ---- ---- ---- ---- ---- ---- ----
01월         4    4    4    5    5    5    4
02월         4    4    4    4    4    4    4
03월         5    5    4    4    4    4    5
04월         4    4    5    5    4    4    4
05월         4    4    4    4    5    5    5
06월         5    5    4    4    4    4    4
07월         4    4    5    5    5    4    4
08월         5    4    4    4    4    5    5
09월         4    5    5    4    4    4    4
10월         4    4    4    5    5    5    4
11월         5    4    4    4    4    4    5
12월         4    5    5    5    4    4    4
*/
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요