使用sumifs等效查询更新sql表
希望你能帮忙。我对sql相当陌生,这就是我的查询 我想用一个新字段来更新现有表,该字段对每个日期每个唯一编号的订单进行求和。例如,在下表中,SumOfOrders是我想要的列使用sumifs等效查询更新sql表,sql,sql-server,sumifs,Sql,Sql Server,Sumifs,希望你能帮忙。我对sql相当陌生,这就是我的查询 我想用一个新字段来更新现有表,该字段对每个日期每个唯一编号的订单进行求和。例如,在下表中,SumOfOrders是我想要的列 UniqueID Date Orders SumOfOrders A 01/03/2012 2 9 A 01/03/2012 3 9 A 01/03/2012 4 9 A 01/07/2012
UniqueID Date Orders SumOfOrders
A 01/03/2012 2 9
A 01/03/2012 3 9
A 01/03/2012 4 9
A 01/07/2012 1 1
B 02/07/2012 3 3
B 30/10/2012 2 4
B 30/10/2012 2 4
C 01/03/2012 5 5
D NULL NULL n/a
有超过一百万个唯一的ID,所以这只是一个简化的例子
根据我在谷歌上搜索的内容,我觉得它应该使用一些变量来表示分区上的和(使用更新表和集合,但下面的代码给出了错误的记录数):
select [UniqueID], [Date], [Orders],
sum([Orders]) over (partition by [UniqueID], [Date] order by [UniqueID], [Date])as SumOfOrders
from test
group by [UniqueID], [Date], [Orders]
order by [UniqueID], [Date], [Orders]
非常感谢您的指点!也许您只是想:
select [UniqueID], [Date], [Orders],
sum([Orders]) over (partition by [UniqueID], [Date]) as SumOfOrders
from test
order by [UniqueID], [Date], [Orders];
同样的简化版本是:
select t.[UniqueID], t.[Date], t.[Orders], t1.SumOfOrders
from test t cross apply
(select sum(t1.Orders) as SumOfOrders
from test t1
where t1.[UniqueID] = t.[UniqueID] and t1.[Date] = t.[Date]
) t1
order by t.[UniqueID], t.[Date], t.[Orders];