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

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

 

▶ 예제 코드 (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
    TO_CHAR(SOURCE_DATE,'MM') || '월' TARGET_MONTH
   ,SUM(DECODE(TO_CHAR(SOURCE_DATE, 'D'), '1', 1, 0)) "일"
   ,SUM(DECODE(TO_CHAR(SOURCE_DATE, 'D'), '2', 1, 0)) "월"
   ,SUM(DECODE(TO_CHAR(SOURCE_DATE, 'D'), '3', 1, 0)) "화"
   ,SUM(DECODE(TO_CHAR(SOURCE_DATE, 'D'), '4', 1, 0)) "수"
   ,SUM(DECODE(TO_CHAR(SOURCE_DATE, 'D'), '5', 1, 0)) "목"
   ,SUM(DECODE(TO_CHAR(SOURCE_DATE, 'D'), '6', 1, 0)) "금"
   ,SUM(DECODE(TO_CHAR(SOURCE_DATE, 'D'), '7', 1, 0)) "토"
FROM SOURCE_TABLE
GROUP BY TO_CHAR(SOURCE_DATE, 'MM')
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

댓글을 달아 주세요