sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:agrupar por consecutivo

En SQL Server, puede hacer esto con agregación y diferencia de números de fila:

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);

Creo que la mejor manera de entender cómo funciona esto es mirando los resultados de la subconsulta. Verás como la diferencia entre los dos valores define los grupos de valores adyacentes.