달을 유연하게 체크해서 insert 0 1 7,117

by 정우성 [SQL Query] [2024.12.03 16:15:46]


fr -to 구간을 줘서 insert를 하고 싶습니다.

 

그런데 중간에 이미 입력 된 값이 있으면

그값을 제외하고 넣고 싶습니다

 

ex1)

fr to가  1-12월이라면    1-12로 넣고

 

ex2)

fr to 가 1월-12월인데  이미 입력 된값이 6월이 있다면,

1-5월  7-12월 이렇게 2건을 넣고 싶습니다.

 

어떻게 쉽게 할 방법 없을까요

by 마농 [2024.12.03 16:41:36]
WITH t AS
( -- 기존 데이터 --
SELECT '202403' ym FROM dual
UNION ALL SELECT '202406' FROM dual
)
SELECT a.ym
  FROM (SELECT TO_CHAR(ADD_MONTHS(s, LEVEL - 1), 'yyyymm') ym
          FROM (SELECT TO_DATE('202401', 'yyyymm') s
                     , TO_DATE('202412', 'yyyymm') e
                  FROM dual
                )
        CONNECT BY LEVEL <= MONTHS_BETWEEN(e, s) + 1
        ) a
  LEFT OUTER JOIN t b
    ON a.ym = b.ym
 WHERE b.ym IS NULL
 ORDER BY a.ym
;

 

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