Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Nombre d'occurrences consécutives de valeurs dans le tableau

Une approche est la différence des numéros de ligne :

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;

La logique est plus facile à comprendre si vous exécutez la sous-requête et regardez les valeurs de chaque numéro de ligne séparément, puis regardez la différence.