sql >> Databasteknik >  >> RDS >> Sqlserver

Alternativ till lead lag-funktion i SQL Server 2008

I ditt fall, id s verkar vara numeriska kan du bara göra en självanslutning:

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;

Det här är inte riktigt samma minut. Det är inom 60 sekunder. Behöver du verkligen samma kalendertidminut? Om så är fallet kan du göra:

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


  1. sätt att undvika globala temptabeller i Oracle

  2. SQL Server-index:Nyckelkrav, prestandapåverkan och överväganden

  3. Oracle DB citat kolumnnamn

  4. Aktiverar TLS i R12.1