반응형
SELECT --1
M01,M02,M03,M04,M05,M06,M07,M08,M09,M10,M11,M12,MT
FROM (
SELECT --2
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'01',1,0)) AS M01,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'02',1,0)) AS M02,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'03',1,0)) AS M03,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'04',1,0)) AS M04,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'05',1,0)) AS M05,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'06',1,0)) AS M06,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'07',1,0)) AS M07,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'08',1,0)) AS M08,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'09',1,0)) AS M09,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'10',1,0)) AS M10,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'11',1,0)) AS M11,
SUM(DECODE(SUBSTR(A.REG_DATE,5,2),'12',1,0)) AS M12,
SUM(1) AS MT -- Total Sum
FROM PJ_WORKLOAD A --table
WHERE A.REG_DATE BETWEEN '20210101' AND '20211231' --date column
)
2번째 SELECT 문에서 통계 처리 해야 할 부분에 대해서 정리 한다.
SUM 과 DECODE 문을 통해서, 특정날자의 구간을 비교 해서 만족 한다면, 1개를 카운트 한다.
예) 20211122 의 경우 M11에서 1로 변환된다. 다른 DECODE에서는 0으로 반환
종합된 결과를 최종 에서 다시 한번 셀렉트 해주면 좀 더 깔끔한 결과를 볼 수 있다.
물론 두번째 SELECT 문만 사용해도 문제는 없다.