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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das ist, was Sie nach:
Dies kann langsam sein, wenn die Ergebnismenge groß ist und es ist nicht eine gute Unterstützung index...
BEARBEITEN
Ah, warten Sie eine Sekunde, die Werte gehen hoch und runter, nicht nur auf... wenn das der Fall ist, können Sie versuchen, diese viel langsamer Ansatz:
Ergebnisse:
InformationsquelleAutor der Antwort Aaron Bertrand
Ergebnisse:
InformationsquelleAutor der Antwort valo
Wir können dies tun, mit sub-queries auch
So, ich habe im Vergleich die Werte der 2 Zeilen, ändert sich dann der Unterschied von rn werden nicht gleich 1, ansonsten rn-Wert um 1 erhöht werden, also, ich habe alle Reihen, deren Differenz mit der nächsten Zeile rn-Wert ist nicht 1 und sub2.rn NULL IST, wird für die erste Zeile, weil der join erfolgt über die id = 2.
InformationsquelleAutor der Antwort chetan kumar