INSERT INTO CMPHOL
(CORPCD
,PLACCD
,CMPDAT
,HOLGBN)
SELECT * FROM (
WITH SUB_DATES AS (
SELECT
TM.DATES -- 날짜
,TM.DAYS -- 요일
,CASE WHEN TM.DAYS = '1' OR TM.DAYS = '7' THEN 'Y' ELSE 'N' END DAYGBN -- 휴일구분
FROM ( SELECT TO_CHAR(START_DT, 'YYYY-MM-DD') DATES -- 날짜
,TO_CHAR(START_DT, 'D') DAYS -- 요일
FROM ( SELECT TO_DATE(TO_CHAR(TO_DATE('20230101','YYYYMMDD') + (LEVEL-1), 'YYYY-MM-DD')) AS START_DT -- 한해날짜
FROM DUAL
CONNECT BY LEVEL <= (TO_DATE('20231231','YYYYMMDD')-TO_DATE('20230101','YYYYMMDD')+1)
) A
) TM
ORDER BY TM.DATES ASC
)
, SUB_HOLDAT AS (
SELECT A.DATES -- 날짜
,CASE WHEN (SELECT 'Y' AS DAYGBN FROM HOLDAY B WHERE B.HOLDAT > '2023-01-01' AND B.HOLDAT = A.DATES) IS NULL THEN A.DAYGBN ELSE 'Y' END DAYGBN -- 최종휴일구분
FROM SUB_DATES A
)
, SUB_COMPIF AS (
SELECT CORPCD -- 법인코드
, PLACCD -- 사업장코드
FROM COPMST
GROUP BY CORPCD, PLACCD
)
SELECT A.CORPCD, A.PLACCD, B.DATES, B.DAYGBN
FROM SUB_COMPIF A
JOIN SUB_HOLDAT B ON 1=1 -- 조인 조건을 걸지 않는 방법
ORDER BY A.CORPCD, A.PLACCD, B.DATES ASC
) A
ORDER BY A.CORPCD, A.PLACCD, A.DATES ASC
전자 정부 API에서 습득한 공휴일 정보와 조합해서 DB에 저장
'개발 관련 기록과 정리 > SQL' 카테고리의 다른 글
오라클 정규식을 통한 전화번호 가공 (0) | 2023.09.12 |
---|---|
오라클 삭제된 데이터 찾기 (0) | 2023.09.12 |
오라클 UPDATE SELECT 정리 (0) | 2023.09.12 |
날짜 처리 (0) | 2023.09.12 |