Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie gehe ich mit dem 1-Level-Tiefe-Nesting-Limit in Oracle um?

Mein Ansatz wäre, eine feste Anzahl von Daten zu generieren, beginnend mit sysdate -1 absteigend, und dann daran zu arbeiten. Im folgenden Snippet habe ich 100 gewählt. Wenn Sie das richtige Datum gefunden haben, verwenden Sie es einfach, um nach Tabelle1 zu filtern.

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