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

Count Anzahl des aufeinanderfolgenden Vorkommens von Werten in der Tabelle

Ein Ansatz ist die Differenz der Zeilennummern:

select name, count(*) 
from (select t.*,
             (row_number() over (order by id) -
              row_number() over (partition by name order by id)
             ) as grp
      from t
     ) t
group by grp, name;

Die Logik ist am einfachsten zu verstehen, wenn Sie die Unterabfrage ausführen und sich die Werte jeder Zeilennummer separat ansehen und sich dann den Unterschied ansehen.