2016-07-22 6 views
0

Ich habe eine Gruppe von Zeilen in der richtigen Reihenfolge. Spalte "Status" hat nur zwei Werte 0/1. Jetzt möchte ich eine Sequenznummer/Gruppennummer für jedes 0/1 Set hinzufügen. es kann 1 bis viele Zeilen von Nullen geben, aber nur eine 1 für jeden Satz am Ende. Wie füge ich eine neue Spalte als Sequenznummer, die nur erhöht, wenn ein 1.So fügen Sie eine Sequenznummer zu einer Gruppe von Zeilen basierend auf der Statusspalte hinzu

Beispiel ist:

ID Status Row Group Number 
1 0 1 
2 0 1 
3 1 1 
4 0 2 
5 1 2 
6 0 3 
7 0 3 
8 0 3 
9 1 3 

Frage ist, wie kann ich die dritte Spalte bekommen?

danke.

Antwort

4

Hmmm. . . Dies ist eine kumulative Summe bis zur vorherigen Zeile (plus 1). Also, in SQL Server 2012+ können Sie tun:

select t.*, 
     1 + sum(status) over (order by id) - status as rowgroupnumber 
from t; 
+0

Ich glaube, Sie müssen '+ 1 'auf' rowgroupnumber' Wert – Nicarus

+0

Dies ist, was ich als Ausgabe erhalten: http://imgur.com/bdnyAfq – Nicarus

+0

@Nicarus. . . Das ist irgendwie lustig. Ich habe das in den Text geschrieben und dann nicht in die Abfrage eingefügt. –

Verwandte Themen