Heim >Datenbank >MySQL-Tutorial >Wie vergleiche ich benachbarte Zeilen in SQL Server 2008 ohne LEAD und LAG?
Alternativen zu LEAD- und LAG-Funktionen in SQL Server 2008
Problem:
SQL Server 2008 unterstützt die LEAD- und LAG-Funktionen nicht. Sie müssen festlegen, wie die aktuelle Zeile mit dem Wert in der nächsten Zeile verglichen werden soll.
Lösung:
Eine Alternative besteht darin, einen Selbstjoin durchzuführen:
SELECT t.* FROM table t JOIN table tnext ON t.id = tnext.id - 1 AND t.StatusId = 1 AND tnext.StatusId = 6 AND DATEDIFF(SECOND, t.MinStartTime, tnext.MinStartTime) < 60;
Diese Abfrage gibt Zeilen zurück, bei denen der Status der aktuellen Zeile 1 ist, der Status der nächsten Zeile 6 ist und der Zeitunterschied zwischen den beiden Zeilen beträgt weniger als 60 Sekunden.
Wenn Sie eine genaue Minutenübereinstimmung benötigen, können Sie die Abfrage ändern:
SELECT t.* FROM table t JOIN table tnext ON t.id = tnext.id - 1 AND t.StatusId = 1 AND tnext.StatusId = 6 AND DATEDIFF(SECOND, t.MinStartTime, tnext.MinStartTime) < 60 AND DATEPART(MINUTE, t.MinStartTime) = DATEPART(MINUTE, tnext.MinStartTime);
Das obige ist der detaillierte Inhalt vonWie vergleiche ich benachbarte Zeilen in SQL Server 2008 ohne LEAD und LAG?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!