give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

累積値を求めるSQL

SQL Server用のロジックとして書くとこんな感じ。
クエリの構造自体は他のRDBMSでも使えるはず。


SQL

create table #a (key_col int, val int)

insert into #a values (1, 10)
insert into #a values (2, 10)
insert into #a values (3, 30)
insert into #a values (4, 10)

select x.key_col,x.val,sum(y.val) as cumulated
from #a x 
inner join #a y on
x.key_col >= y.key_col
group by x.key_col,x.val
order by x.key_col,x.val

drop table #a


結果

 key_col     val         cumulated   
 ----------- ----------- ----------- 
           1          10          10 
           2          10          20 
           3          30          50 
           4          10          60 


参考書籍

SQL Hacks ―データベースを自由自在に操るテクニック

SQL Hacks ―データベースを自由自在に操るテクニック