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

SQL Server DATEDIFF obliczona kolumna między wierszami

W tym celu polecam użyć widoku:

CREATE VIEW Table1_vw 
AS
WITH cte AS (
    SELECT  *, 
            ROW_NUMBER() OVER (ORDER BY RecordTime) AS rn
    FROM    dbo.Table1
)
SELECT  mc.RecordTime,
        mc.Running,
        mc.Fault,
        DATEDIFF(second, mc.RecordTime, mp.RecordTime) Diff
FROM cte mc
LEFT JOIN cte mp
ON mc.rn = mp.rn - 1

Ponieważ używasz SQL Server 2012 możesz użyć LEAD funkcja:

CREATE VIEW Table1_vw 
AS
SELECT  RecordTime,
        Running,
        Fault,
        DATEDIFF(second,RecordTime,LEAD(RecordTime,1,NULL) OVER (ORDER BY RecordTime ASC) ) as Diff
FROM Table1
GO


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy wydajność INNER JOIN zależy od kolejności tabel?

  2. Automatyczne comiesięczne generowanie danych w SQL

  3. Dlaczego nie użyć varchar(max)?

  4. Sugestie dotyczące implementacji tabel audytu w SQL Server?

  5. SQL Server SMO skarży się na brak biblioteki DLL