这有点难以用语言解释......我正在尝试计算矩阵中分组的不同值的总和。假设我有一个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查询。任何人都知道如何做到这一点?
答案 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")