안녕하세요...년 또는 월 도는 일 단위로 조건에 따라 Row를 생성 하려고 하는데요...
/* 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. 일단위 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 ;