sql >> Database teknologi >  >> RDS >> Oracle

udskriv start- og slutdato i én række for kontinuerlige eller overlappende datointervaller i oracle SQL

Der er en elegant (og effektiv) løsning ved hjælp af match_recognize klausul (som kræver Oracle 12.1 eller højere).

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. Sådan ændres kompatibilitetsniveauet for en database med T-SQL

  2. Tilføj førende og efterfølgende nuller i SQL Server

  3. Hvad er fordelene ved VistaDB

  4. Sådan rejser du en fejl i en MySQL-funktion