【发布时间】:2015-11-02 23:45:43
【问题描述】:
Create Table #Test (
ID Int Primary Key Identity,
Category VarChar(100)
)
Insert into #Test
(Category)
Values
('Banana'),
('Banana'),
('Banana'),
('Banana'),
('Banana'),
('Banana'),
('Strawberry'),
('Strawberry'),
('Strawberry'),
('Banana'),
('Banana')
Select
*
,ROW_NUMBER() Over (Partition by Category order by ID) as RowNum
From #Test
Order by ID
所以这个脚本返回这个:
ID Category RowNum
1 Banana 1
2 Banana 2
3 Banana 3
4 Banana 4
5 Banana 5
6 Banana 6
7 Strawberry 1
8 Strawberry 2
9 Strawberry 3
10 Banana 7
11 Banana 8
这很有意义,只是我希望它返回这个:
ID Category RowNum
1 Banana 1
2 Banana 2
3 Banana 3
4 Banana 4
5 Banana 5
6 Banana 6
7 Strawberry 1
8 Strawberry 2
9 Strawberry 3
10 Banana 1
11 Banana 2
我希望它在遇到一组新香蕉时重新开始计数。显然我的数据并不是真正的香蕉,但它很容易可视化。
香蕉的这种重复被认为是新的,所以我们看到这个时想从一个开始计数。我一直在绞尽脑汁,想不出一个好的方法来做到这一点。我明白为什么它不工作,但想不出办法让它工作。对最好的方法有什么建议吗?
【问题讨论】:
标签: sql sql-server window-functions