使用 sumifs 等效查询更新 sql table

Updating a sql table with a sumifs equivalent query

希望能帮到你。我是 sql 的新手,这是我的查询。

我想用一个新字段更新现有 table,该字段汇总每个日期每个唯一编号的订单。因此,例如,在下面的 table 中,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,因此这只是一个简化的示例。

根据我的谷歌搜索,我觉得它应该在 sum over partition by 上使用一些变体(使用更新 table 和设置,但是下面的代码给出了错误的记录数:

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