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

时间:2012-08-02 19:18:30

标签: sql sql-server database

我有一张表有一个重复的字段。我需要一个函数来计算并说明哪个重复在第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

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

我正在使用SQL Server 2010R2

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

1 个答案:

答案 0 :(得分: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