sql >> Databasteknik >  >> RDS >> Oracle

skriv ut start- och slutdatum på en rad för kontinuerliga eller överlappande datumintervall i Oracle SQL

Det finns en elegant (och effektiv) lösning som använder match_recognize klausul (som kräver Oracle 12.1 eller högre).

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


  1. Bästa praxis:Importera mySQL-fil i PHP; dela frågor

  2. Hämtar länkad lista i MySQL-databas

  3. Hur Postgresql KOPIERA TILL STDIN Med CSV gör om konflikter gör uppdatering?

  4. Datumkolumnaritmetik i PostgreSQL-fråga