是否根据SQL Server的列值分配行号?
在SQL server 2014中,我有这样一个表:是否根据SQL Server的列值分配行号?,sql,sql-server,Sql,Sql Server,在SQL server 2014中,我有这样一个表: name a a b b b c d d d 我想创建另一列,即S.No,但序列号值将根据名称列进行分配。如果名称是s.no值的2倍。将是1和2。如果d是d值的3倍,则d值将是1、2和3,并且计数器将再次以1开始表示e。因此,该表将如下所示: name S.no. a 1 a 2
name
a
a
b
b
b
c
d
d
d
我想创建另一列,即S.No,但序列号值将根据名称列进行分配。如果名称是s.no值的2倍。将是1和2。如果d是d值的3倍,则d值将是1、2和3,并且计数器将再次以1开始表示e。因此,该表将如下所示:
name S.no.
a 1
a 2
b 1
b 2
b 3
c 1
d 1
d 2
d 3
有解决办法吗?谢谢您的帮助。使用行号()
使用行编号()
:
另一种方法是使用Count()
另一种方法是使用Count()
SELECT name, ROW_NUMBER() OVER (PARTITION BY name ORDER BY (SELECT 1)) [S.no.]
FROM T
select
Name,
Count(1) over (partition by Name ORDER BY Name ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as Slno
from MyTable