Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server:Gruppieren nach fortlaufend

In SQL Server können Sie dies mit Aggregation und Differenz von Zeilennummern tun:

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

Ich denke, der beste Weg, um zu verstehen, wie das funktioniert, besteht darin, sich die Ergebnisse der Unterabfrage anzusehen. Sie werden sehen, wie die Differenz zwischen den beiden Werten die Gruppen benachbarter Werte definiert.