sql >> Database teknologi >  >> RDS >> Sqlserver

sql-forespørgsel efter forskel mellem nuværende række og forrige række baseret på dato og klokkeslæt

I SQL Server 2012+ kan du bruge lag() . I SQL Server 2008 skal du bruge 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. Node.js kan ikke godkende til MySQL 8.0

  2. Skjuler databaser for et login på Microsoft SQL Server 2008R2 og nyere

  3. oracle Vælg datoer for varer solgt inden for 1 minut efter hinanden

  4. PostgreSQL:nogle problemer at indsætte fra vælg med på konflikt