20

次の形式のテーブル (SQL Server 2005) があります。

dummy_id, date_registered, item_id, 数量, 価格

そして、次のように、date_registered ごとに各 item_id 注文の累積合計を計算する新しい列 (累積)を追加したいと思います。

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

事前にサンクス

4

1 に答える 1

37

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;
于 2013-07-31T13:40:11.137 に答える