sql >> Database teknologi >  >> RDS >> Sqlserver

Find min og maks for undersæt af på hinanden følgende rækker - mellemrum og øer

Du vil finde på hinanden følgende grupper af lignende rækker og derefter aggregering. Jeg kan godt lide forskellen mellem rækkenumre:

select name, act, min(startt) as startt, max(endd) as endd
from (select i.*,
             row_number() over (partition by name, act order by rn) as seqnum_na,
             row_number() over (partition by name order by rn) as seqnum_n
      from input i
     ) i
group by (seqnum_n - seqnum_na), name, act;

Du kan se, hvordan dette virker, ved at se på, hvad underforespørgslen gør.



  1. Django kunne ikke finde MySQLdb python-modulet

  2. Sende en varchar fuld af kommaseparerede værdier til en SQL Server IN-funktion

  3. Fungerer Oracle OCI OCIpasswordChange krypterer overført adgangskode

  4. Udvidelse af klasser i databasen