Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Alternativa da função de atraso de lead no SQL Server 2008


No seu caso, o id s parecem ser numéricos, você pode apenas fazer uma auto-junção:
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;

Este não é exatamente o mesmo minuto. É dentro de 60 segundos. Você realmente precisa do mesmo minuto de tempo do calendário? Se sim, você pode fazer:
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);