좀 특이하게 생긴 날짜 테이블이 있습니다
국가코드, 휴일플래그
KOR , 01AUG
KOR, SAT
KOR, SUN
KOR, 01JAN
KOR, 20191225
USA, SAT
USA, 20181010
.........
국가코드가 있고, 휴일날짜 패턴이 SAT처럼 요일을 지정하면 토요일이 다나와야하고 날짜영문달명이 나오면 매해 해당날짜가 나와야하고 2018010처럼 지정한 날도 포함되어야합니다
제가 원하는 결과는 SYSDATE로부터 미래 1년치 국가코드별로 휴일날짜를 구하고 싶습니다
KOR 20200801 ----01AUG
KOR 20191221 ----토요일
KOR 20191222 ----일요일
KOR 20200101 ----JAN01
KOR 20191225
이런식이고 토요일 일요일은 계속 뽑아오구요
USD에 대해서도 마찬가지입니다
생각처럼 잘 안돼서 좋은 방법 있을까요
WITH holiday AS ( SELECT 'KOR' na_cd, '01AUG' hu_cd FROM dual UNION ALL SELECT 'KOR', 'SAT' FROM dual UNION ALL SELECT 'KOR', 'SUN' FROM dual UNION ALL SELECT 'KOR', '01JAN' FROM dual UNION ALL SELECT 'KOR', '20191225' FROM dual UNION ALL SELECT 'USA', 'SAT' FROM dual UNION ALL SELECT 'USA', '20181010' FROM dual ) , calendar AS ( SELECT TRUNC(sysdate) + LEVEL - 1 dt FROM dual CONNECT BY LEVEL <= 365 ) SELECT b.na_cd , TO_CHAR(a.dt, 'yyyymmdd') hu_dt , LISTAGG(b.hu_cd, ', ') WITHIN GROUP(ORDER BY b.hu_cd) hu_cd FROM calendar a , holiday b WHERE b.hu_cd IN ( TO_CHAR(a.dt, 'yyyymmdd') , TO_CHAR(a.dt, 'DY' , 'nls_date_language=american') , TO_CHAR(a.dt, 'ddMON', 'nls_date_language=american') ) GROUP BY b.na_cd, a.dt ORDER BY b.na_cd, a.dt ;