Ето 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
Както можете да видите, той е много гъвкав, тъй като трябва да промените само един номер.