Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak radzić sobie z 1-poziomowym limitem zagnieżdżania w Oracle?

Moje podejście polegałoby na wygenerowaniu stałej liczby dat, począwszy od sysdate -1 malejąco, a następnie pracy nad nimi. W poniższym fragmencie wybrałem 100. Po uzyskaniu właściwej daty użyj jej do filtrowania według tabeli 1.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ODP.NET Jak przekazać tablicę ciągów do procedury składowanej Oracle?

  2. Jak anulować długo trwającą operację Bazy danych?

  3. Co oznacza symbol SQL Select || oznaczać?

  4. Błąd ORA-00932 podczas używania wyboru z polami Union i CLOB

  5. SELECT SUM zwraca wiersz, gdy nie ma rekordów