Hier is de SQL Fiddle die de volgende vraag laat zien:
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
In uw vraag vroeg u om 3 opeenvolgende waarden op te tellen. U heeft uw vraag gewijzigd omdat u zegt dat het aantal opeenvolgende records dat u moet optellen, kan veranderen. In de bovenstaande query moet u eenvoudig de m.RowNumber + 2
. wijzigen aan wat je maar nodig hebt.
Dus als je er 60 nodig hebt, gebruik dan
m.RowNumber + 59
Zoals je kunt zien, is het erg flexibel omdat je maar één nummer hoeft te wijzigen.