by 트집이 [SQL Query] oracle plsql connect by 날짜계산 distinct order by [2023.03.30 09:50:49]
SELECT DISTINCT SUBSTR(DT, 4, 2) DD
FROM (
SELECT TO_DATE('20221028','YYYYMMDD') + LEVEL - 1 DT
FROM DUAL
CONNECT BY LEVEL <= TO_DATE('20230928','YYYYMMDD') - TO_DATE('20221028' ,'YYYYMMDD') + 1
)
ORDER BY
DD;
위와 같이 두날짜 사이의 월을 가져오는 쿼리를 만들었는데 문제가 order by로 월 순서로 가져오고 싶은데 잘 안 되네요.
실제 날짜를 기준으로 order by 를 해야합니다.
항상 도움 주셔서 감사합니다.
월만 뽑는게 맞나요? 연도도 함께 뽑는게 맞지 않나요? 그리고 date 항목에 substr 한 것은 잘못된 사용법 입니다.
SELECT TO_CHAR(ADD_MONTHS(sdt, LEVEL - 1), 'yyyymm') yyyymm
, TO_CHAR(ADD_MONTHS(sdt, LEVEL - 1), 'mm') mm
FROM (SELECT TRUNC(TO_DATE('20221028', 'yyyymmdd'), 'mm') sdt
, TRUNC(TO_DATE('20230928', 'yyyymmdd'), 'mm') edt
FROM dual
)
CONNECT BY LEVEL <= MONTHS_BETWEEN(edt, sdt) + 1
;