Gruppenzeilen nach zusammenhängenden Datumsbereichen für Wertegruppen
Betrachten Sie einige TabelleT
, bestellt durchCol1, Col2, Date1, Date2
:
Col1 Col2 Date1 Date2 rate
ABC 123 11/4/2014 11/5/2014 -90
ABC 123 11/4/2014 11/6/2014 -55
ABC 123 11/4/2014 11/7/2014 -90
ABC 123 11/4/2014 11/10/2014 -90
Ich möchte die Daten gruppieren, damit Änderungen einfach überprüft werden können / Wiederholungen reduzieren, also habe ich
Col1 Col2 Date1 start_Date2 end_Date2 rate
ABC 123 11/4/2014 11/5/2014 11/5/2014 -90
ABC 123 11/4/2014 11/6/2014 11/6/2014 -55
ABC 123 11/4/2014 11/7/2014 11/10/2014 -90
Ich kann das leicht tun, wenn ich eine andere Spalte mit den als @ nummerierten Zeilen bekomm1 2 3 3
(nur wichtig, dass Zahlen verschieden sind) und dannGROUP BY
diese Spalte.
Mein Versuch bei der Abfrage:
SELECT *, DENSE_RANK() OVER (ORDER BY rate) island
FROM T
ORDER BY Date2
gibt nicht was ich suche:
Col1 Col2 Date1 Date2 rate island
ABC 123 11/4/2014 11/5/2014 -90 1
ABC 123 11/4/2014 11/6/2014 -55 2
ABC 123 11/4/2014 11/7/2014 -90 1
ABC 123 11/4/2014 11/10/2014 -90 1
Ich möchte, dass die Abfrage die zweite Gruppe von @ erken-90
-Werte sollten als neue Gruppe behandelt werden, da sie nach einer Gruppe mit einem anderenrate
.
Das SQL-Tag [gaps-and-islands] war ziemlich hilfreich, aber ich bin nicht in der Lage, herauszufinden, wie ich damit umgehen soll, wenn die Rate auf einen vorherigen Wert zurückgesetzt wird. Wie soll ich meine Abfrage ändern?