sql >> Databasteknik >  >> RDS >> Sqlserver

Sammanfoga data i en enda SQL-tabell utan en markör

Den viktigaste observationen är att en sekvens av tal minus en annan sekvens är en konstant. Vi kan generera en annan sekvens med row_number . Detta identifierar alla grupper:

select id, MIN(number) as low, MAX(number) as high
from (select t.*,
             (number - ROW_NUMBER() over (partition by id order by number) ) as groupnum
      from t
     ) t
group by id, groupnum

Resten är bara aggregering.



  1. Hur räknar man ord i MySQL / regular expression replacer?

  2. Användarkontohantering, roller, behörigheter, autentisering PHP och MySQL - Del 6

  3. sql oracle - ta bort dubblettvärde

  4. Kalkylblad kontra databaser:Är det dags att byta? Del 2