删除SSRS报告组中的冗余值

时间:2013-02-07 21:57:38

标签: reporting-services grouping running-total

我正在使用以下数据集开发SSRS报告。 “期间”有一个过滤器。这是一个多选过滤器。数据按“帐户”字段分组。我需要显示每个组的总费用(这很容易)。我还需要在同一组级别上显示“预算”。问题是预算数据是多余的 - 见下文。

假设第一组(Account = 100 AND Period = 201301),Sum([Budget])将产生200,这不是真的。如果用户只从过滤器中选择一个Period,我可以使用Average函数。如果他们选择多个值(例如201301,201302),那么平均值将是(100 + 100 + 150 + 150)/ 4 = 125,这将是错误的,因为它必须是100 + 150 = 250。我不想在返回的数据集中的所有行之间进行平均。

ID Account Period  Expense Budget
1  100     201301  20      100
2  100     201301  30      100
3  100     201302  10      150
4  100     201302  40      150
5  200     ...................

那么,我如何编写表达式来实现这一目标呢? 一个肮脏的工作重点是消除预算列中的冗余值,这样我就可以安全地使用Sum([Budget])而无需担心重复。更新的数据集如下所示:

ID Account Period  Expense Budget
1  100     201301  20      100
2  100     201301  30      NULL
3  100     201302  10      150
4  100     201302  40      NULL
5  200     ...................

请建议任何一种方法。谢谢。

2 个答案:

答案 0 :(得分:1)

最优雅的方法是使用FIRST()聚合函数。

=FIRST(Fields!Budget.Value, "MyAccountGroupName")

在某些情况下,这不起作用。然后,您需要在描述时将逻辑移动到查询中,或者您可以在报表中使用嵌入式代码。

答案 1 :(得分:0)

我会遵循你的“肮脏的解决方法”方法。您可能可以通过一些花哨的计算在SSRS内部获得结果,但这将是完全模糊的。