返回每种产品的所有销售价值和销售价值的总和

时间:2012-10-23 15:02:16

标签: sql sql-server-2008 sum

我有一个像这样的查询

SELECT
    ProductID,
    ProductSales,
    ProductLocationName
FROM
    ProductLocation
WHERE
    ProductLine=@ProductLine

所以我的样本结果可能就像这样

ProductID    ProductSales   ProductLocationName
1            $2             Boston
1            $2             Chicago
2            $8             Boston

如果productID/ProductSales不同,有些ProductLocationName组合会重复,但我需要返回的内容如下:

我需要在示例结果中返回上面返回的内容,但除此之外,我需要将所有ProductSales值相加,除了重复的ProductID/ProductSales组合。

上面的例子:

ProductID 1 + ProductID 2
$2 + $8 = $10

请注意,由于结果中重复了prodID/Sales值,因此我没有添加$ 2,但是我仍然需要返回上面的3行,因为我必须在我的转发器中显示所有3行。

希望我清楚,另外ProductID& ProductLocation(我的查询中还会包含其他列),我需要

    每个ProductSales
  1. SampleResults(如上ProductID所示)。我知道SUM(ProductSales)会让我知道这一点。

  2. {li>

    SUM ProductSales ProductID所有唯一ProductSales值($ 2 + $ 8 = $ 10)

    如果可能的话,我想在相同的存储过程中完成所有这些操作。

    我主要关心的是如何获得第2点,意味着SUM所有{{1}}值,在我的例子中$ 2 + $ 8

    如果您需要更多信息,请告诉我,这是我在这里的第一篇文章。

1 个答案:

答案 0 :(得分:0)

要正确执行此操作,您需要一个子查询进行计算:

SELECT ProductID, ProductSales, ProductLocationName, t.SumProductSales
FROM ProductLocation pl cross join
     (select sum(ProductSales) as SumProductSales
      from (select productId, max(ProductSales) as ProductSales
            from ProductionLocation pl
            group by productId
           ) p
     ) t
WHERE ProductLine=@ProductLine

您需要注意ProductSales具有相同价值的不同产品。