Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server :agrupar por consecutivo


No SQL Server, você pode fazer isso com agregação e diferença de números de linha:
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);

Acho que a melhor maneira de entender como isso funciona é observando os resultados da subconsulta. Você verá como a diferença entre os dois valores define os grupos de valores adjacentes.