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
반응형
그리드형(광고전용)
'Database > Oracle' 카테고리의 다른 글
[DATABASE/ORACLE] WM_CONCAT 함수 : 사용해 여러 행의 데이터를 한 컬럼에 결합하기 (0) | 2015.05.11 |
---|---|
[DATABASE/ORACLE] INSTR 함수 사용하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] 사용자 정의 함수를 사용해 숫자 문자열 여부 구하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] TRANSLATE 함수 : 숫자 문자열 여부 구하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] 정규식을 사용해 숫자 문자열 여부 구하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] PIVOT 함수 : 동적 집계하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] 특정 기간 날짜 테이블 조회하기 (0) | 2015.05.11 |
[DATABASE/ORACLE] OPEN FOR 명령 : 동적 쿼리 실행하기 (0) | 2015.05.10 |
[DATABASE/ORACLE] EXECUTE IMMEDIATE 명령 : 동적 쿼리 실행하기 (0) | 2015.05.10 |
[DATABASE/ORACLE] START WITH ~ CONNECT BY PRIOR 절 : 재귀 호출하기 (0) | 2015.05.10 |
댓글을 달아 주세요