Heim >Datenbank >MySQL-Tutorial >Wie vergleiche ich benachbarte Zeilen in SQL Server 2008 ohne LEAD und LAG?

Wie vergleiche ich benachbarte Zeilen in SQL Server 2008 ohne LEAD und LAG?

Susan Sarandon
Susan SarandonOriginal
2024-12-29 13:34:18615Durchsuche

How to Compare Adjacent Rows in SQL Server 2008 Without LEAD and 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn