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

zapytanie sql o różnicę między bieżącym wierszem a poprzednim wierszem na podstawie daty i godziny

W SQL Server 2012+ możesz użyć lag() . W SQL Server 2008 użyj 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak pobrać rekordy z ostatnich 30 minut w MS SQL?

  2. Użycie klauzuli OUTPUT do wstawienia wartości spoza INSERTED

  3. Serwer SQL wypełnia tabelę na podstawie innej tabeli z podciągiem jako nazwą kolumny

  4. Usuwanie dużych ilości danych z SQL Server 2008

  5. Po co wstawiać blok instrukcji TSQL, gdy poziom izolacji transakcji dla innej transakcji można serializować z filtrem nie powodującym konfliktów?