ROW_Count () Zum erneuten Starten basierend auf der Bestellung

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

So gibt dieses Skript Folgendes zurück:

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

Was absolut sinnvoll ist, außer ich möchte, dass es dies zurückgibt:

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

Ich möchte, dass die Zählung neu gestartet wird, wenn eine neue Bananenmenge erreicht wird. Natürlich handelt es sich bei meinen Daten nicht wirklich um Bananen, aber sie sind einfach zu visualisieren.

Diese Wiederholung von Bananen wird als neu angesehen, daher möchten wir mit dem Zählen von eins beginnen, wenn wir dies sehen. Ich habe mir den Kopf zerbrochen und kann mir keine gute Möglichkeit dafür vorstellen. Ich verstehe, warum es nicht funktioniert, kann mir aber keine Möglichkeit vorstellen, es zum Laufen zu bringen. Irgendwelche Ratschläge dazu?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage