sql >> Databasteknik >  >> RDS >> Sqlserver

sql-fråga för skillnad mellan nuvarande rad och föregående rad baserat på datum och tid

I SQL Server 2012+ kan du använda lag() . I SQL Server 2008 använder du 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;


  1. De bästa funktionerna att leta efter i ett SQL Server-övervakningsverktyg

  2. NLS_CHARSET_NAME() Funktion i Oracle

  3. Återställ sekvensen till ett specifikt värde

  4. R12.2 Online patchningscykel Sammanfattning