년, 월, 일 단위로 Row생성하기.. 0 2 7,636

by 동동동 [SQL Query] Oracle 쿼리 [2022.11.21 14:38:05]


안녕하세요...년 또는 월 도는 일 단위로 조건에 따라 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를 생성하는 좋은 방법이 있을까요??

도움 부탁드립니다.

 

by 마농 [2022.11.21 15:12:05]
-- 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
;

 


by 동동동 [2022.11.21 15:44:57]

마농님 감사합니다..^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입