sql 话语难题

sql 语句难题
 ID      NAME  INDEX

 1        A
  
 2        A

 3        B
 
 4        B

 5        A

变成
 ID      NAME   INDEX

 1        A         0
  
 2        A          1

 3        B          0

 4        B         1

 5        A          2
------解决方案--------------------
--创建表
CREATE TABLE test (id INT IDENTITY(1,1) , NAME varchar(1))
INSERT INTO test
SELECT 'A' UNION ALL
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'B' UNION ALL
SELECT 'A'  

--查询
SELECT id ID,NAME 名称,ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY id)-1 已出现次数 from test
order by id

--结果
ID          名称   已出现次数
----------- ---- --------------------
1           A           0
2           A           1
3           B           0
4           B           1 
5           A           2