Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Média móvel / média móvel


Aqui está o SQL Fiddle que demonstra a seguinte 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

Na sua pergunta você estava pedindo para somar 3 valores consecutivos. Você modificou sua pergunta dizendo que o número de registros consecutivos que você precisa somar pode mudar. Na consulta acima, você precisa alterar o m.RowNumber + 2 para o que você precisar.

Então, se você precisa de 60, então use
m.RowNumber + 59

Como você pode ver, é muito flexível, pois você só precisa alterar um número.