如何使用SQL中的详细信息表计算在Master表上执行批量更新?

时间:2014-01-12 07:49:25

标签: sql sql-server tsql

我有两个具有以下模式的表:

ShoppingCard                            ShoppingCardItems
------------                            -----------------
Id                                      Id
TFTotalPriceToPay                       Id_ShoppingCard
                                        TFTotalPrice

我想在T-SQL中编写一个查询以执行批量更新,我更喜欢不使用for loop为我执行以下操作:

计算Sum表格中每个TFTotalPrice的所有项目ShoppingCard的{​​{1}},然后ShoppingCardItems每个Update字段{ {1}}结果。

我尝试了以下代码:

TFTotalPriceToPay

但是我收到了这个错误:

  

聚合可能不会出现在UPDATE语句的集合列表中。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以使用CTE

with ShoppingCardItemsTotalPrice AS
(
select Id_ShoppingCard, Sum(TFTotalPrice) as TFTotalPrice
from ShoppingCardItems
group by Id_ShoppingCard
)
update sc set sc.TFTotalPriceToPay = cte.TFTotalPrice
from ShoppingCard sc inner join ShoppingCardItemsTotalPrice cte on cte.Id_ShoppingCard = sc.Id