Oto SQL Fiddle który demonstruje następujące zapytanie:
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
W swoim pytaniu prosiłeś o zsumowanie 3 kolejnych wartości. Zmodyfikowałeś swoje pytanie, mówiąc, że liczba kolejnych rekordów, które musisz zsumować, może się zmienić. W powyższym zapytaniu wystarczy zmienić m.RowNumber + 2
do tego, czego potrzebujesz.
Więc jeśli potrzebujesz 60, użyj
m.RowNumber + 59
Jak widać, jest to bardzo elastyczne, ponieważ wystarczy zmienić tylko jeden numer.