Voici le SQL Fiddle qui illustre la requête suivante :
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
Dans votre question, vous demandiez de faire la somme de 3 valeurs consécutives. Vous avez modifié votre question en indiquant que le nombre d'enregistrements consécutifs dont vous avez besoin pour additionner pourrait changer. Dans la requête ci-dessus, vous devez simplement modifier le m.RowNumber + 2
à tout ce dont vous avez besoin.
Donc, si vous avez besoin de 60, utilisez
m.RowNumber + 59
Comme vous pouvez le voir, c'est très flexible puisque vous n'avez qu'à changer un numéro.