Zde je SQL Fiddle což ukazuje následující dotaz:
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
Ve své otázce jste chtěli sečíst 3 po sobě jdoucí hodnoty. Upravili jste svou otázku s tím, že počet po sobě jdoucích záznamů, které potřebujete sečíst, se může změnit. Ve výše uvedeném dotazu stačí změnit m.RowNumber + 2
na cokoli budete potřebovat.
Pokud tedy potřebujete 60, použijte
m.RowNumber + 59
Jak vidíte, je velmi flexibilní, protože stačí změnit jedno číslo.