На заметку. Вы можете думать о ROW_NUMBER () как об итоговой сумме ваших строк. Вы можете видеть, что они оба делают одно и то же:
WITH numbers AS (SELECT f.G, f.N FROM (VALUES (1,1),(1,3),(1,4),(2,1),(2,5)) AS f(G,N))
SELECT
NbrGroup = f.G,
OldNbr = f.N,
NewNbrRN = ROW_NUMBER() OVER (PARTITION BY f.G ORDER BY f.N),
NewNbrC = COUNT(*) OVER (PARTITION BY f.G ORDER BY f.N)
FROM numbers AS f;
Результаты:
NbrGroup OldNbr NewNbrRN NewNbrC
----------- ----------- -------------------- -----------
1 1 1 1
1 3 2 2
1 4 3 3
2 1 1 1
2 5 2 2
ROW_NUMBER () работает лучше, поэтому разработчики не используютCOUNT для такого типа вещей.