WITH T AS ( SELECT '20190904' A_DATE FROM DUAL ), CAL AS ( --휴일테이블:9월 예시 SELECT '20190907' HOLIDAY FROM DUAL UNION ALL SELECT '20190908' HOLIDAY FROM DUAL UNION ALL SELECT '20190912' HOLIDAY FROM DUAL UNION ALL SELECT '20190913' HOLIDAY FROM DUAL UNION ALL SELECT '20190914' HOLIDAY FROM DUAL UNION ALL SELECT '20190915' HOLIDAY FROM DUAL UNION ALL SELECT '20190921' HOLIDAY FROM DUAL UNION ALL SELECT '20190928' HOLIDAY FROM DUAL UNION ALL SELECT '20190929' HOLIDAY FROM DUAL ) SELECT MIN(B_DATE) FROM ( SELECT A_DATE,LEVEL LV,TO_CHAR(TO_DATE(A_DATE,'YYYYMMDD')+LEVEL,'YYYYMMDD') B_DATE FROM T CONNECT BY LEVEL<=30 --휴일의 연속은 30일을 넘을 수 없다고 가정한다 ) A WHERE 1=1 AND LV>=10 AND NOT EXISTS ( SELECT 1 FROM CAL C WHERE C.HOLIDAY=A.B_DATE ) ORDER BY B_DATE