結果セットでCTEとCROSSJOINを使用しようとしています。現在の行に至るまでの4行を合計したいと思います。私が見つけたオンラインの例では、CTEは使用せず、新しく作成されたテーブルのみを使用しています(http://sqlandme.com/2011/08/17/sql-server-denali-over-rows-range/)。構文は機能するはずですが、「「ROWS」の近くの構文が正しくありません」というエラーが表示されます。
出力例は、次のステートメントを使用した場合です。SUM(y)OVER(ORDER BY x ROWS 4 PRECEDING)sum
XY SUM
1 7 0 No prev rows, so sum is 0
2 1 7 Sum = 7
3 2 8 = 1 + 7
4 5 10 = 2 + 1 + 7
5 7 15 = 5 + 2 + 1 + 7
6 34 15 = 7 + 5 + 2 + 1
7 32 48 = 34 + 7 + 5 + 2
誰かがクエリの何が間違っているかについて何か提案がありますか?前もって感謝します。
with quarterResults as (
<subquery in here>
)
--COLUMN1: String
--COLUMN2: Date
--COLUMN3: Date
--COLUMN4: Double
select a.TIC, a.DATADATE, a.EFFDATE, SUM(b.valuei) OVER (ORDER BY a.TIC, a.DATADATE, a.EFFDATE ROWS 4 PRECEDING) AS [SUM]
from quarterResults a
cross join quarterResults b
where a.datadate > b.datadate
group by a.tic, a.datadate, a.EFFDATE, a.valuei
order by a.TIC, a.datadate