これが
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
あなたの質問では、3つの連続した値を合計するように求めていました。合計する必要のある連続レコードの数が変わる可能性があると質問を変更しました。上記のクエリでは、m.RowNumber + 2
を変更するだけです。 必要なものに。
したがって、60が必要な場合は、
m.RowNumber + 59
ご覧のとおり、1つの番号を変更するだけでよいため、非常に柔軟性があります。