[Oracle] 월별 집계 쿼리 실행 시, 해당 날짜가 없어도 표현되게 하는 방법

|
SELECT
    TO_CHAR(TO_DATE(V.MON), 'MM') AS MON
    , Z.COL_A
    ...
    
FROM 
	-- Z : 가져올 데이터 테이블
    (
    SELECT 
        TO_CHAR(TO_DATE(BILL_DT), 'MM') AS MON,
        COL_A,
        
    FROM ...

    AND 날짜컬럼 BETWEEN TO_DATE(SUBSTR('202101',0,4) || '0101', 'YYYY-MM-DD') AND TO_DATE('202110' ||  '31', 'YYYY-MM-DD') -- /* 1월 ~ 12월 조건 */
    GROUP BY TO_CHAR(TO_DATE(날짜컬럼), 'MM'), COL_A, ... -- 날짜값 형반환 주의
    ORDER BY MON -- /* 1월 ~ 12월 정렬 */
    ) Z
    , (
        -- V : 날짜 뷰(1월1일 ~ 12월 31일)
        SELECT TO_DATE(SUBSTR('202101',0,4) || '0101','YYYY-MM-DD') + LEVEL - 1 AS MON
        FROM dual 
        CONNECT BY LEVEL  <=  (TO_DATE(SUBSTR('202110',0,4) || '1231','YYYY-MM-DD') - TO_DATE(SUBSTR('202101',0,4) || '0101','YYYY-MM-DD') + 1)
    ) V
WHERE V.MON = Z.MON(+) -- right outer join
GROUP BY
    TO_CHAR(TO_DATE(V.MON), 'MM')
    , Z.COL_A
    ...

ORDER BY MON

'DATABASE(SQL)' 카테고리의 다른 글

[Oracle] 월별 누적 합계  (0) 2023.10.20
[Oracle] 해당월 전월의 마지막일자 구하기  (1) 2023.10.18
[Oracle] 월별 집계 쿼리  (1) 2023.10.13
[Oracle] Merge into  (0) 2023.08.29
[Oracle] DB Link  (0) 2023.08.25
And