我在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
任何解决方案?谢谢你的帮助。
答案 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