我有一个以下格式的表(SQL Server 2005):
dummy_id、注册日期、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
提前感谢
在 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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)