Berikut adalah SQL Fiddle yang menunjukkan kueri berikut:
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
Dalam pertanyaan Anda, Anda meminta untuk menjumlahkan 3 nilai berturut-turut. Anda memodifikasi pertanyaan Anda dengan mengatakan jumlah catatan berurutan yang perlu Anda jumlahkan dapat berubah. Dalam kueri di atas, Anda hanya perlu mengubah m.RowNumber + 2
untuk apa pun yang Anda butuhkan.
Jadi jika Anda membutuhkan 60, gunakan
m.RowNumber + 59
Seperti yang Anda lihat, ini sangat fleksibel karena Anda hanya perlu mengubah satu nomor.