2016-03-28 8 views
1

Ich habe die folgende TabelleWie zurücksetzen DENSE_RANK

Id, Cat1, Cat2, ColA, ColB,

1,1,1 ,,

2,1,1 ,,

3,1,2 ,,

4,1,3 ,,

5,2,11 ,,

6,2,12 ,,

7,2,12 ,,

Ich brauche pro Gruppierung Spalte von Cat2 beginnend bei 1 eine eindeutige laufende Nummer hinzufügen, aber es hat wieder zurückgesetzt 1, wenn Cat1 ändert

Mein Ausgang

Row, Id, Cat1, Cat2, ColA, ColB,

sein sollte

1,1,1,1 ,,

1,2,1,1 ,,

2,3,1,2 ,,

3,4,1,3 ,,

1,5,2,11 ,,

2,6,2,12 ,,

2,7,2,12 ,,

DENSE_RANK() liefert einen eindeutigen Wert, z.

Row= DENSE_RANK() OVER (ORDER BY Cat2) 

aber ich brauche sie sich einer anderen Spalte basiert zurücksetzen Cat1

+0

'Zeile = DENSE_RANK() OVER (ORDER BY Cat2)' sollte Ihre gewünschte Ausgabe geben. Nicht wahr? Was ist die Ausgabe, die Sie erhalten, wenn Sie 'dense_rank()' verwenden? – AKS

Antwort

3

Verwenden Sie die PARTITION BY-Klausel auf Cat1:

Row = DENSE_RANK() OVER (PARTITION BY Cat1 ORDER BY Cat2) 

Die PARTITION BY-Klausel Ihre DENSE_RANK partitionieren() erste Basis auf Ihrer Cat1, bevor Sie sie dicht anordnen, die genau das ist, was Sie brauchen.