Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Alternativa della funzione di lead lag in SQL Server 2008

Nel tuo caso, l'id s sembrano essere numerici, puoi semplicemente fare un self-join:

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;

Questo non è proprio lo stesso minuto. È entro 60 secondi. Hai davvero bisogno dello stesso minuto di calendario? Se è così, puoi fare:

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