Ich möchte eine Spalte erhöhen und dann basierend auf einem Wert in einer anderen Spalte anhalten und erneut starten.Wert inkrementieren basierend auf einer anderen Spalte
Zum Beispiel:
Ich habe eine Tabelle:
CustomerID Reportdate True_False
9001 2013-01-01 0
9001 2013-02-01 0
9001 2013-03-01 0
9001 2013-04-01 1
9001 2013-05-01 0
9001 2013-06-01 1
9001 2013-07-01 1
9001 2013-08-01 0
9001 2013-09-01 1
9001 2013-10-01 0
9001 2013-11-01 0
9001 2013-12-01 0
9001 2014-01-01 1
9001 2014-02-01 1
9001 2014-03-01 0
9001 2014-04-01 0
9001 2014-05-01 0
9001 2014-06-01 0
9001 2014-07-01 0
9001 2014-08-01 0
9001 2014-09-01 1
9001 2014-10-01 1
9001 2014-11-01 1
9001 2014-12-01 1
9002 2013-01-01 0
9002 2013-02-01 0
9002 2013-03-01 0
9002 2013-04-01 1
9002 2013-05-01 1
9002 2013-06-01 1
9002 2013-07-01 0
9002 2013-08-01 1
9002 2013-09-01 0
9002 2013-10-01 1
9002 2013-11-01 1
9002 2013-12-01 1
9002 2014-01-01 1
9002 2014-02-01 0
9002 2014-03-01 0
9002 2014-04-01 0
9002 2014-05-01 0
9002 2014-06-01 0
9002 2014-07-01 1
9002 2014-08-01 1
9002 2014-09-01 1
9002 2014-10-01 0
9002 2014-11-01 1
9002 2014-12-01 0
Der gewünschte Ausgang:
CustomerID Reportdate True_False Sequence
9001 2013-01-01 0 1
9001 2013-02-01 0 2
9001 2013-03-01 0 3
9001 2013-04-01 1 0
9001 2013-05-01 0 1
9001 2013-06-01 1 0
9001 2013-07-01 1 0
9001 2013-08-01 0 1
9001 2013-09-01 1 0
9001 2013-10-01 0 1
9001 2013-11-01 0 2
9001 2013-12-01 0 3
9001 2014-01-01 1 0
9001 2014-02-01 1 0
9001 2014-03-01 0 1
9001 2014-04-01 0 2
9001 2014-05-01 0 3
9001 2014-06-01 0 4
9001 2014-07-01 0 5
9001 2014-08-01 0 6
9001 2014-09-01 1 0
9001 2014-10-01 1 0
9001 2014-11-01 1 0
9001 2014-12-01 1 0
9002 2013-01-01 0 1
9002 2013-02-01 0 2
9002 2013-03-01 0 3
9002 2013-04-01 1 0
9002 2013-05-01 1 0
9002 2013-06-01 1 0
9002 2013-07-01 0 1
9002 2013-08-01 1 0
9002 2013-09-01 0 1
9002 2013-10-01 1 0
9002 2013-11-01 1 0
9002 2013-12-01 1 0
9002 2014-01-01 1 0
9002 2014-02-01 0 1
9002 2014-03-01 0 2
9002 2014-04-01 0 3
9002 2014-05-01 0 4
9002 2014-06-01 0 5
9002 2014-07-01 1 0
9002 2014-08-01 1 0
9002 2014-09-01 1 0
9002 2014-10-01 0 1
9002 2014-11-01 1 0
9002 2014-12-01 0 1
So ist die sequenz Feld, das durch 1 seine Operanden inkrementiert wobei "True_False" 0 ist stoppt dann an der Stelle, wo "True_False" 1 ist und wiederholt anschließend die Inkrementierung, um die in der gewünschten Ausgabe gezeigte Sequenz zu erzeugen.
Alle Hilfe ist willkommen,
CREATE TABLE test ( CustomerID bigint, DateKey date, True_false bit, ); insert into test values (9001,'2013-01-01','1'), (9001,'2013-02-01','0'), (9001,'2013-03-01','0'), (9001,'2013-04-01','0'), (9001,'2013-05-01','1'), (9001,'2013-06-01','1'), (9001,'2013-07-01','0'), (9001,'2013-08-01','0'), (9001,'2013-09-01','0'), (9001,'2013-10-01','0'), (9001,'2013-11-01','0'), (9001,'2013-12-01','1'), (9001,'2014-01-01','1'), (9001,'2014-02-01','0'), (9001,'2014-03-01','1'), (9001,'2014-04-01','0'), (9001,'2014-05-01','0'), (9001,'2014-06-01','1'), (9001,'2014-07-01','1'), (9001,'2014-08-01','0'), (9001,'2014-09-01','1'), (9001,'2014-10-01','0'), (9002,'2014-11-01','0'), (9002,'2014-12-01','0'), (9002,'2013-01-01','0'), (9002,'2013-02-01','0'), (9002,'2013-03-01','0'), (9002,'2013-04-01','1'), (9002,'2013-05-01','1'), (9002,'2013-06-01','0'), (9002,'2013-07-01','1'), (9002,'2013-08-01','1'), (9002,'2013-09-01','1'), (9002,'2013-10-01','1'), (9002,'2013-11-01','0'), (9002,'2013-12-01','1'), (9002,'2014-01-01','1'), (9002,'2014-02-01','0'), (9002,'2014-03-01','1'), (9002,'2014-04-01','1'), (9002,'2014-05-01','1'), (9002,'2014-06-01','0'), (9002,'2014-07-01','1'), (9002,'2014-08-01','1'), (9002,'2014-09-01','0'), (9002,'2014-10-01','0'), (9002,'2014-11-01','0'), (9002,'2014-12-01','0')
@ Veljko89 für die Berechnung der laufenden Summe Windowing-Funktion Summe verwende ich glaube nicht, es so einfach ist. Was wäre die Partition? Was ist mit dem Zurücksetzen der Sequenz? –
@TimBiegeleisen du hattest recht ... sorry für irreführende da – Veljko89
Das sieht ja schon mal so aus [this] (http://stackoverflow.com/questions/42930626/increment-and-then-break-and-start-over- erneut-basierend auf einem Wert in einer anderen Spalte) Frage. Aber dieser hat mehr Daten. – HABO