sql >> Database >  >> RDS >> Sqlserver

Gegevens samenvoegen in een enkele SQL-tabel zonder cursor

De belangrijkste observatie is dat een reeks getallen minus een andere reeks een constante is. We kunnen een andere reeks genereren met behulp van row_number . Dit identificeert alle groepen:

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

De rest is gewoon aggregatie.



  1. MySQL:een grote tafel opsplitsen in partities of aparte tabellen?

  2. ZF2 valideert datum- en tijdformaat PT_BR altijd De invoer lijkt geen geldige datum te zijn

  3. Dubbele rijen verwijderen en alleen de oudste rij verlaten?

  4. java.lang.ClassNotFoundException:org.postgresql.Driver