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
Так этот скрипт возвращает это:row_count(), чтобы начать За основании На заказ
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
Я хочу он должен перезапустить счет, когда он попадает в новый набор бананов. Очевидно, что мои данные на самом деле не бананы, но это позволяет легко визуализировать.
Это повторение бананов считается новым, поэтому мы хотим начать отсчет с одного, когда увидим это. Я терзал свой мозг и не могу придумать хороший способ сделать это. Я понимаю, почему он не работает, но не может придумать способ заставить его работать. Любые советы по наилучшему способу сделать это?