Ich bin auf der Suche nach der besten Lösung für dieses Problem und habe bisher kein Glück gehabt. Ich verwende Microsoft SQL Server 2008.
Hier sind also die Beispieldaten eines Benutzers:
\======================
Name Status Datum
\======================
BOB Aktiv 2011-03-07
BOB Aktiv 2011-03-11
BOB Deaktiviert 2011-03-15
BOB Deaktiviert 2011-03-21
BOB Aktiv 2011-03-23
BOB Aktiv 2011-03-28
\======================
Ich möchte dies gruppiert haben, so dass es zeigt, wenn der Benutzer tatsächlich den Status geändert und nicht das nächste Mal, wenn sie überprüft wurden, wenn das Ergebnis gleich blieb, so was die Abfrage zurückgibt wäre wie folgt:
\======================
BOB Aktiv 2011-03-07
BOB Deaktiviert 2011-03-15
BOB Aktiv 2011-03-23
\======================
Dies sind Daten, auf die ich keinen Zugriff habe, wie sie erstellt werden.
Haben Sie eine Idee, wie ich diese Daten am besten erhalten kann? Bedenken Sie, dass es sich um Tausende von Datensätzen handelt und die Leistung nach Möglichkeit berücksichtigt werden sollte. Mir fällt keine Möglichkeit ein, die Gruppierung so vorzunehmen, dass die "Activate "s nicht zusammen gruppiert werden und die MIN-Aggregatfunktion verwendet wird.
Gibt es eine Möglichkeit, vielleicht Schleife durch und machen die Daten aussehen wie diese für die Gruppierung und Gruppe auf der letzten Spalte? Wäre dies überhaupt der beste Ansatz?
\======================
Name Status Datum Gruppe
\======================
BOB Aktiv 2011-03-07 1
BOB Aktiv 2011-03-11 1
BOB Deaktiviert 2011-03-15 2
BOB Deaktiviert 2011-03-21 2
BOB Aktiv 2011-03-23 3
BOB Aktiv 2011-03-28 3
\======================
Wenn mir jemand ein Stichwort geben könnte, nach dem ich suchen kann, um mich auf den richtigen Weg zu bringen, wäre ich sehr dankbar.