【问题标题】:SQL Server Cumulative Sum by GroupSQL Server 按组累计总和
【发布时间】:2013-08-01 01:45:47
【问题描述】:

我有一个这种格式的表(SQL Server 2005):

dummy_id、date_registered、item_id、数量、价格

我想添加一个新列(cumulative),它按 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

提前感谢

【问题讨论】:

    标签: sql sql-server cumulative-sum


    【解决方案1】:

    在 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;
    

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 2012-01-23
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多