안녕하세요...년 또는 월 도는 일 단위로 조건에 따라 Row를 생성 하려고 하는데요...
1 2 3 4 5 6 7 8 9 10 | /* 1.일단위 */ SELECT TO_CHAR(SDT + LEVEL - 1, 'YYYY-MM-DD' ) WORK_DY FROM ( SELECT TO_DATE( '20221001' , 'YYYY-MM-DD' ) SDT -- 시작일 , TO_DATE( '20221121' , 'YYYY-MM-DD' ) EDT -- 종료일 FROM DUAL ) CONNECT BY LEVEL <= EDT - SDT + 1 ; 다음과 같이 일 단위인 경우 10월1일 부터 11월21일 까지 생성하는데... |
월 단위 (2022-10, 2022-11) 또는 년단위 (2022) 로 주어진 기간에 따라 Row를 생성하는 좋은 방법이 있을까요??
도움 부탁드립니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | -- 1. 일단위 SELECT TO_CHAR(s + LEVEL - 1, 'yyyy-mm-dd' ) work_dy FROM ( SELECT TO_DATE( '20221001' , 'yyyymmdd' ) s -- 시작일 , TO_DATE( '20221121' , 'yyyymmdd' ) e -- 종료일 FROM dual ) CONNECT BY LEVEL <= e - s + 1 ; -- 2. 월단위 SELECT TO_CHAR(ADD_MONTHS(s, LEVEL - 1), 'yyyy-mm' ) work_ym FROM ( SELECT TO_DATE( '202210' , 'yyyymm' ) s -- 시작년월 , TO_DATE( '202211' , 'yyyymm' ) e -- 종료년월 FROM dual ) CONNECT BY LEVEL <= MONTHS_BETWEEN(e, s) + 1 ; -- 3. 연단위 SELECT TO_CHAR(s + LEVEL - 1) work_yy FROM ( SELECT '2022' s -- 시작년 , '2023' e -- 종료년 FROM dual ) CONNECT BY LEVEL <= e - s + 1 ; |