Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Пълзяща средна / Пълзяща средна

Ето SQL Fiddle който демонстрира следната заявка:

WITH TempS as 
(
  SELECT s.SNo, s.value, 
  ROW_NUMBER() OVER (ORDER BY s.SNo) AS RowNumber
  FROM MyTable AS s
)
SELECT m.SNo, m.value,
(
  SELECT SUM(s.value) 
  FROM TempS AS s
  WHERE RowNumber >= m.RowNumber
  AND RowNumber <= m.RowNumber + 2
) AS Sum3InRow
FROM TempS AS m

Във вашия въпрос искахте да сумирате 3 последователни стойности. Променихте въпроса си, като казахте, че броят на последователните записи, които трябва да сумирате, може да се промени. В горната заявка просто трябва да промените m.RowNumber + 2 за това, от което имате нужда.

Така че, ако имате нужда от 60, използвайте

m.RowNumber + 59

Както можете да видите, той е много гъвкав, тъй като трябва да промените само един номер.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ограничете връзка със SQL Server до конкретен IP адрес

  2. Как да форматирате датата и часа в SQL Server

  3. SQL Server:Връщане назад без НАЧАЛО НА ТРАНЗАКЦИЯ

  4. Колоната не съществува в клаузата IN, но SQL се изпълнява

  5. Изберете кирилица в SQL