Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否根据SQL Server的列值分配行号?_Sql_Sql Server - Fatal编程技术网

是否根据SQL Server的列值分配行号?

是否根据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

在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
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