Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Alternatywa funkcji lead lag w SQL Server 2008

W Twoim przypadku id s wydają się być numeryczne, możesz po prostu wykonać samodołączenie:

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;

To nie jest ta sama minuta. To jest w ciągu 60 sekund. Czy rzeczywiście potrzebujesz tej samej minuty czasu kalendarzowego? Jeśli tak, możesz zrobić:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz wszystkie daty między dwiema datami w SQL Server

  2. ISJSON() Przykłady w SQL Server (T-SQL)

  3. Konfigurowanie grup dostępności AlwaysOn — część 2

  4. SQL Server - zatrzymaj lub przerwij wykonywanie skryptu SQL

  5. Usuń zduplikowane wiersze w SQL Server