Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Abfrage für den Unterschied zwischen der aktuellen Zeile und der vorherigen Zeile basierend auf datetime

In SQL Server 2012+ können Sie lag() verwenden . Verwenden Sie in SQL Server 2008 apply :

select t.*,
       coalesce(t.cumulativeValue - tprev.cumulativeValue, t.cumulativeValue) as diff
from t outer apply
     (select top 1 tprev.*
      from t tprev
      where tprev.siteId = t.siteId and tprev.readtime < t.readtime
      order by tprev.readtime desc
     ) tprev;