Wählen Sie Zeilen aus, in denen sich der Spaltenwert geändert hat

Sagen wir, ich habe die folgende Tabelle:

Value    Time
0        15/06/2012 8:03:43 PM
1        15/06/2012 8:03:43 PM     *
1        15/06/2012 8:03:48 PM 
1        15/06/2012 8:03:53 PM
1        15/06/2012 8:03:58 PM     
2        15/06/2012 8:04:03 PM     *
2        15/06/2012 8:04:08 PM
3        15/06/2012 8:04:13 PM     *
3        15/06/2012 8:04:18 PM
3        15/06/2012 8:04:23 PM
2        15/06/2012 8:04:28 PM     *
2        15/06/2012 8:04:33 PM     

Wie wähle ich die Stern-Reihen, das ist, wo Value geändert hat? Grundsätzlich bin ich versucht, die Zeit zu finden, wenn Value geändert hat, so kann ich andere Abfragen auf der Grundlage dieser zeitlichen Abständen. Die Lösung sollte nicht davon abhängen, zu wissen Value oder Time im Voraus.

Scheint es mir, dass dies sollte nicht sehr schwer (aber es ist schwer genug für mich offensichtlich!).

Ich bin derzeit mit SQL Server 2008 habe ich zwar Zugriff auf 2012, wenn die neuen Fenster/Analyse-Funktionen sind hilfreich.

Ich habe versucht, die Anpassung der Lösungen hier http://blog.sqlauthority.com/2011/11/24/sql-server-solution-to-puzzle-simulate-lead-and-lag-without-using-sql-server-2012-analytic-function/ aber meine Abfrage nicht ausführen konnten, nach einer Stunde! Ich denke, die Verknüpfungen explodieren die Zeile der Größe etwas unhandlich (oder I screwed it up).

Kann ich dieses problem lösen mit C# - code und mehrere db-Aufrufe, aber es scheint wie etwas, das getan werden könnte, in eine Tabellenwert-Funktion oder SP, die wäre viel schöner.

Auch, eine Lösung, die funktioniert nur mit Zunehmender Value ist OK, wenn das einfacher ist.

InformationsquelleAutor der Frage agentnega | 2012-06-20

Schreibe einen Kommentar