使用 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];
希望能帮到你。我是 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];