我有两个具有以下模式的表:
ShoppingCard ShoppingCardItems
------------ -----------------
Id Id
TFTotalPriceToPay Id_ShoppingCard
TFTotalPrice
我想在T-SQL中编写一个查询以执行批量更新,我更喜欢不使用for loop
为我执行以下操作:
计算Sum
表格中每个TFTotalPrice
的所有项目ShoppingCard
的{{1}},然后ShoppingCardItems
每个Update
字段{ {1}}结果。
我尝试了以下代码:
TFTotalPriceToPay
但是我收到了这个错误:
聚合可能不会出现在UPDATE语句的集合列表中。
提前致谢。
答案 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