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

SQL Server :raggruppa per consecutivo

In SQL Server puoi farlo con l'aggregazione e la differenza di numeri di riga:

select HevEvenementID, HteTypeEvenID,
       max(HjvNumeSequJour)
from (select t.*,
             row_number() over (partition by HevEvenementID order by HjvNumeSequJour) as seqnum_1,
             row_number() over (partition by HevEvenementID, HteTypeEvenID order by HjvNumeSequJour) as seqnum_2
      from yourtable t
     ) t
group by HevEvenementID, HteTypeEvenID, (seqnum_1 - seqnum_2)
order by max(HjvNumeSequJour);

Penso che il modo migliore per capire come funziona sia guardare i risultati della sottoquery. Vedrai come la differenza tra i due valori definisce i gruppi di valori adiacenti.