sql >> Databasteknik >  >> RDS >> Oracle

Oracle sql-fråga för att gruppera på varandra följande poster efter datum

Förutsatt att vi bara kan använda start_date för att identifiera de intilliggande posterna (dvs. det finns inga luckor) kan du använda skillnaden mellan radnummermetoden:

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;

För att se hur detta fungerar, titta på resultaten av underfrågan. Du bör kunna "se" hur skillnaden mellan de två radnumren definierar grupperna av angränsande poster med samma hastighet.



  1. Ersätt brytlinjen med '\n'

  2. Varför påverkar Django-tidszonsinställningen epoktid?

  3. 19.3 PDB Stäng ORA-65107 ORA-16078

  4. Vanligt tabelluttryck i MySQL