sql >> Database >  >> RDS >> Oracle

Oracle SQL-query om opeenvolgende records op datum te groeperen

Ervan uitgaande dat we gewoon start_date . kunnen gebruiken om de aangrenzende records te identificeren (d.w.z. er zijn geen gaten), dan kunt u de benadering voor het verschil in rijnummers gebruiken:

select id, min(start_date) as mn_date, max(end_date) as mx_date, rate
from (select t.*,
             row_number() over (partition by id order by start_date) as seqnum_i,
             row_number() over (partition by id, rate order by start_date) as seqnum_ir
      from t
     ) t
group by id (seqnum_i - seqnum_ir), rate;

Bekijk de resultaten van de subquery om te zien hoe dit werkt. U zou moeten kunnen "zien" hoe het verschil van de twee rijnummers de groepen aangrenzende records met dezelfde snelheid definieert.



  1. SQL Server-indeling Datum DD.MM.JJJJ UU:MM:SS

  2. Wijzigingsmelding Oracle-database met ODP.NET werkt niet

  3. Top 5 MySQL-bewakingstools

  4. Hoe CHAR() werkt in MariaDB