如何在SQL中向重复数据集添加计数器?

mit*_*atw 2 sql database sql-server

我有一张表有一个重复的字段.我需要一个函数来计算并说明哪个重复在第n行.即;

如果表格如下;

ID  NAME  CLASS
---------------
 1  Tom    a
 2  Dick   b
 3  Harry  c  
 4  Marry  b
 5  Bob    c
 6  Mat    c
 7  Mandi  a
Run Code Online (Sandbox Code Playgroud)

像这样的函数COUNT(class)可以计算每个类值发生了多少次.但我需要一个函数来输出如下结果;

ID  NAME  CLASS (I_NEED) COUNT
--------------------------------
 1  Tom     a      1       2
 2  Dick    b      1       2
 3  Harry   c      1       3
 4  Marry   b      2       2
 5  Bob     c      2       3
 6  Mat     c      3       3
 7  Mandi   a      2       2
Run Code Online (Sandbox Code Playgroud)

我在SQL Server 2010R2上使用MSSQL

任何想法都会有很大的帮助..在此先感谢!!

a_h*_*ame 5

我认为这就是你要找的东西:

select id, 
       name, 
       class,
       row_number() over (partition by class order by id) as i_need,
       count(*) over (partition by class) as cnt
from the_table
order by id
Run Code Online (Sandbox Code Playgroud)