我有一张表有一个重复的字段。我需要一个函数来计算并说明哪个重复在第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
任何想法都会有很大的帮助..在此先感谢!!
答案 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