MS SQL中的复杂SUM

时间:2013-05-07 09:18:47

标签: sql sql-server-2008

我需要对来自多个表的数据进行复杂的求和,但我无法弄清楚如何做。

这是我的表

[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

1 个答案:

答案 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