次の形式のテーブル(SQL Server 2005)があります。
dummy_id、date_registered、item_id、数量、価格
そして、次のように、date_registeredによって各item_id注文の累積合計を計算する新しい列(cumulative)を追加したいと思います。
dummy_id date_registered item_id quantity price cumulative
1 2013-07-01 100 10 34.5 10
2 2013-07-01 145 8 2.3 8
3 2013-07-11 100 20 34.5 30
4 2013-07-23 100 15 34.5 45
5 2013-07-24 145 10 34.5 18
事前にありがとう
SQL Server 2005では、相関サブクエリを使用してこれを行いました。
select dummy_id, date_registered, item_id, quantity, price,
(select sum(quantity)
from t t2
where t2.item_id = t.item_id and
t2.date_registered <= t.date_registered
) as cumulative
from table t;
これを実際にテーブルに追加する場合は、テーブルを変更して列を追加してから更新する必要があります。テーブルに挿入と更新がある場合は、トリガーを追加して最新の状態に保つ必要があります。クエリを介してそれを取得することは間違いなく簡単です。
SQL Server 2012では、次の構文を使用してこれを実行できます。
select dummy_id, date_registered, item_id, quantity, price,
sum(quantity) over (partition by item_id order by date_registered) as cumulative
from table t;