sql >> Database >  >> RDS >> Sqlserver

Alternatief voor lead lag-functie in SQL Server 2008

In jouw geval, de id s lijken numeriek te zijn, je kunt gewoon een self-join doen:

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;

Dit is niet helemaal dezelfde minuut. Het is binnen 60 seconden. Heb je eigenlijk dezelfde kalendertijd minuut nodig? Zo ja, dan kunt u het volgende doen:

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. Schending van UNIQUE KEY-beperking op INSERT WHERE COUNT(*) =0 op SQL Server 2005

  2. Oplossing:"SQLServerAgent is momenteel niet actief ..."

  3. SQLite heeft een foutcode van 14 . geretourneerd

  4. SQLAlchemy, Psycopg2 en Postgresql KOPIE