Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Alternative zur Lead-Lag-Funktion in SQL Server 2008

In Ihrem Fall die id s numerisch zu sein scheinen, können Sie einfach einen Self-Join durchfü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;

Das ist nicht ganz dieselbe Minute. Es ist innerhalb von 60 Sekunden. Benötigen Sie tatsächlich die gleiche Kalenderzeit Minute? Wenn ja, können Sie Folgendes tun:

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);