Här är SQL Fiddle som visar följande fråga:
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
I din fråga bad du att summera 3 på varandra följande värden. Du ändrade din fråga och sa att antalet på varandra följande poster du behöver summera kan ändras. I ovanstående fråga behöver du enkelt ändra m.RowNumber + 2
till vad du än behöver.
Så om du behöver 60, använd då
m.RowNumber + 59
Som du kan se är det väldigt flexibelt eftersom du bara behöver ändra ett nummer.