SSRS递归计数 - 如何只为子节点而不是父节点获取聚合?

时间:2012-01-18 20:28:57

标签: reporting-services hierarchical-data

免责声明:我是SSRS n00b,所以请不要太多腐烂的西红柿:)

我拥有使用Recursive Parent property构建Reporting Services的员工和经理层次结构。这是一个粗略的表示:

-Jim Bob
   Ray
  -Steve
     Ricky Bobby
     Terry

例如,我需要对Steve下的人数进行统计,但当我致电Count(Fields!EmployeeID.Value, "Details", Recursive)时,我会 3 而不是 2 。当然,我可以在计数的情况下减去1,但是当我需要总和时,这不起作用。所以真正的问题是如何获得排除父母的递归聚合?

附加信息:我只有一个组是默认的“详细信息”组。它的设置与this example类似,所以我按EmployeeID进行分组,并将递归父级设置为ManagerID。


更新

我尝试过一些无法解决的问题:

  • 在组内添加一行 - 产生相同的结果,因为它仍然与其他详细信息行在同一范围内。
  • 添加小计 - 不起作用,因为它在详细信息组之外,所以它只呈现一次,而不是每个经理一次。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你可以考虑几件事。

1)您可以在提供报告的SQL查询中提供计数,然后使用

为每个组报告
      =FIRST(Fields!FieldThatHasCount.Value).

2)您可以使用报告的代码块迭代调用函数,增加共享变量的计数或在父节和子节之间进行某种算术,以反映报告显示时的计数。我知道我已经遇到了这种方法的复杂性,这取决于SSRS版本以及报告中的复杂性,嵌套,子报告等级。

答案 1 :(得分:0)

  

如何获得排除父级的递归聚合Sum?

这应该有效,因为您仍然可以访问当前字段的值。

=Sum(Fields!EmployeeSalary.Value, "Details", Recursive) - Fields!EmployeeSalary.Value