我需要对来自多个表的数据做一个复杂的求和,但是我不知道该怎么做。

这是我的桌子

[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

09-30 00:23