Her er SQL Fiddle der viser følgende forespørgsel:
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 dit spørgsmål bad du om at summere 3 på hinanden følgende værdier. Du ændrede dit spørgsmål og sagde, at antallet af på hinanden følgende poster, du skal summere, kunne ændre sig. I ovenstående forespørgsel skal du blot ændre m.RowNumber + 2
til hvad du nogensinde har brug for.
Så hvis du har brug for 60, så brug
m.RowNumber + 59
Som du kan se, er det meget fleksibelt, da du kun skal ændre ét nummer.