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

Drucken Sie Start- und Enddatum in einer Zeile für fortlaufende oder sich überschneidende Datumsbereiche in Oracle SQL

Es gibt eine elegante (und effiziente) Lösung mit match_recognize -Klausel (für die Oracle 12.1 oder höher erforderlich ist).

select po, startdate, enddate
from   orders
match_recognize (
  partition by po
  order     by startdate
  measures  first(startdate) as startdate, max(enddate) as enddate
  pattern   ( c* n )
  define    c as max(enddate) + 1 >= next(startdate)  
);