分组的不同值的总和

时间:2011-10-24 14:22:09

标签: reportingservices-2005 aggregation

这有点难以用语言解释......我正在尝试计算矩阵中分组的不同值的总和。假设我有一个SQL查询返回的以下数据:

------------------------------------------------
| Group | ParentID | ChildID | ParentProdCount |
|     A |        1 |       1 |               2 |
|     A |        1 |       2 |               2 |
|     A |        1 |       3 |               2 |
|     A |        1 |       4 |               2 |
|     A |        2 |       5 |               3 |
|     A |        2 |       6 |               3 |
|     A |        2 |       7 |               3 |
|     A |        2 |       8 |               3 |
|     B |        3 |       9 |               1 |
|     B |        3 |      10 |               1 |
|     B |        3 |      11 |               1 |
------------------------------------------------

查询中还有一些其他数据,但它无关紧要。 ParentProdCount特定于ParentID。

现在,我在MS报表设计器中有一个矩阵,我正在尝试计算ParentProdCount的总和(按“组”分组)。如果我只是添加表达式

=Sum(Fields!ParentProdCount.Value)

我得到A组的结果20和B组的3,这是不正确的。组A的正确值应为5,组B的正确值应为1.如果不涉及ChildID,则不会发生这种情况,但我必须在同一矩阵中使用其他一些特定于子的数据。

我试图嵌套FIRST()和SUM()聚合函数,但显然不可能有嵌套聚合函数,即使它们已定义了作用域。

我非常确定有一些方法可以计算分组的不同总和,而无需创建另一个SQL查询。任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:9)

好的,我通过在SQL查询中添加一个ROW_NUMBER()函数来解决这个问题:

SELECT Group, ParentID, ROW_NUMBER() OVER (PARTITION BY ParentID ORDER BY ChildID ASC) AS Position, ChildID, ParentProdCount FROM Table

然后我用

替换了SSRS SUM函数
=SUM(IIF(Position = 1, ParentProdCount.Value, 0))

答案 1 :(得分:0)

对ParentID进行分组并对该组使用总和

例如:

if group over ParentID =  "ParentIDGroup" 
then 
    column sum of ParentPrdCount = SUM(Fields!ParentProdCount.Value,"ParentIDGroup")