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 ;