我需要对来自多个表的数据进行复杂的求和,但我无法弄清楚如何做。
这是我的表
[Article]
ArticleId Description NetPurchase
1001 Shoe 500
1002 Box 100
[Product]
ProductId Description NetPurchase
3001 Shoe in Box ?
[ProductArticle]
ProductArticleId ArticleId ProductId Qty
1 1001 3001 5
2 1002 3001 2
Product中的NetPurchase应该在ProductArticle中汇总属于产品3001的所有文章。在该示例中(500 * 5 + 100 * 2)= 2700
说明:我希望对Product中的所有行进行SQL UPDATE,它应该连接ProductArticle以获取所有与NetPurchase相关的文章,并与ProductArticle中的Qty相乘。它应该将所有这些都归结为Product.NetPurchase
答案 0 :(得分:3)
WITH records
AS
(
SELECT a.ProductId, SUM(a.Qty * b.NetPurchase) TotalPurchase
FROM ProductArticle a
INNER JOIN Article b
ON a.ArticleId = b.ArticleId
GROUP BY a.ProductId
)
UPDATE a
SET a.NetPurchase = b.TotalPurchase
FROM Product a
INNER JOIN records b
ON a.ProductId = b.ProductId