by 트집이 [SQL Query] oracle plsql connect by 날짜계산 distinct order by [2023.03.30 09:50:49]
1 2 3 4 5 6 7 8 | 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 를 해야합니다.
항상 도움 주셔서 감사합니다.
1 2 | 월만 뽑는게 맞나요? 연도도 함께 뽑는게 맞지 않나요? 그리고 date 항목에 substr 한 것은 잘못된 사용법 입니다. |
1 2 3 4 5 6 7 8 | 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 ; |