sql >> Base de Datos >  >> RDS >> Sqlserver

Promedio móvil / Promedio móvil

Aquí está el SQL Fiddle que demuestra la siguiente consulta:

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

En su pregunta, estaba pidiendo sumar 3 valores consecutivos. Modificó su pregunta diciendo que la cantidad de registros consecutivos que necesita sumar podría cambiar. En la consulta anterior, simplemente necesita cambiar el m.RowNumber + 2 a lo que necesites.

Entonces, si necesita 60, use

m.RowNumber + 59

Como puedes ver es muy flexible ya que solo tienes que cambiar un número.