私のアプローチは、sysdate -1から降順で始まる固定数の日付を生成し、それらを処理することです。次のスニペットでは、100を選択しました。正しい日付を取得したら、それを使用してtable1でフィルタリングします。
select dates
from (
select rownum as rn,
dates
from (
select x.dates,
nvl2(h.holiday_from,'T','F') as hd,
decode (to_char(x.dates,'D')-1,6,'T',7,'T','F') as WE
from (
select trunc(sysdate) - rownum as dates
from dual d
connect By rownum <= 100 -- change this number if you plan on having long holidays
) x
left outer join holidays h
on x.dates between h.holiday_fromand h.holiday_to
)
where hd = 'F' and WE = 'F' -- exclude holidays and weekends
)
where rn = 14; -- return the 14th working day from now