1

我有一个这样的查询

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

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

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

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

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

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

我主要关心的是如何获得第 2 点,即对所有ProductSales值求和,在我的示例中为 $2+$8

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

4

1 回答 1

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 具有相同价值的不同产品。

于 2012-10-23T15:35:45.377 回答