Hier ist die SQL-Fiddle das zeigt die folgende Abfrage:
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 Ihrer Frage wollten Sie 3 aufeinanderfolgende Werte summieren. Sie haben Ihre Frage so geändert, dass sich die Anzahl der aufeinanderfolgenden Datensätze, die Sie summieren müssen, ändern könnte. In der obigen Abfrage müssen Sie einfach m.RowNumber + 2
ändern was auch immer Sie brauchen.
Wenn Sie also 60 brauchen, dann verwenden Sie
m.RowNumber + 59
Wie Sie sehen, ist es sehr flexibel, da Sie nur eine Nummer ändern müssen.