SQL 月毎の累計の集計

累計の計算をするSQL、備忘録として

請求書:日付と金額が入ってる。
create table 請求書 (
日付 date,
金額 money
);

カレンダー:毎日の日付が全部入ってる
create table カレンダー (
日付 date
);

select dateadd(Day,-1,dateadd(Month,1,b.日付)) 年月,sum(金額) 累計
from 請求書 a,カレンダーb
where a.日付<dateadd(Month,1,b.日付) and a.日付>='2009/1/1'
and b.日付 between '2009/1/1' and '2009/12/31'
and day(b.日付)=1

上記で、2009年の1月から12月までの金額累計が求めることができる。