使用sumifs等效查询更新sql表

使用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

希望你能帮忙。我对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      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];