根据列值SQL Server分配行号?

时间:2016-09-01 07:27:37

标签: sql sql-server

我在SQL server 2014中有这样的表:

name    
a       
a       
b       
b       
b       
c       
d       
d       
d       

我想创建另一个是S.No的列。 ,但序列号值将根据名称列分配。如果名称出现s.no的值的2倍。将是1和2.如果d是3的值,则d将是1,2和3,并且对于e,再次计数器将从1开始。所以表格就像:

name    S.no.
a       1
a       2
b       1
b       2
b       3
c       1
d       1
d       2
d       3

任何解决方案?谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

使用ROW_NUMBER()

SELECT name, ROW_NUMBER() OVER (PARTITION BY name ORDER BY (SELECT 1)) [S.no.]
FROM T

答案 1 :(得分:1)

使用Count()

以另一种方式
select 
Name,
Count(1) over (partition by Name ORDER BY Name ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as Slno
from MyTable