sql >> Base de Datos >  >> RDS >> Oracle

imprima la fecha de inicio y finalización en una fila para rangos de fechas continuos o superpuestos en Oracle SQL

Hay una solución elegante (y eficiente) usando match_recognize (que requiere Oracle 12.1 o superior).

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)  
);