我需要对来自多个表的数据做一个复杂的求和,但是我不知道该怎么做。
这是我的桌子
[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
产品中的NetPurchase应该在ProductArticle中汇总属于产品3001的所有文章。在这个例子中(500 * 5 + 100 * 2)= 2700
说明:想要对Product中的所有行进行SQL UPDATE,它应该加入ProductArticle以使用NetPurchase获取所有相关的Article,并乘以ProductArticle中的Qty。它应该将所有这些求和到Product.NetPurchase
最佳答案
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
SQLFiddle Demo