我正在使用以下数据集开发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 ...................
请建议任何一种方法。谢谢。
答案 0 :(得分:1)
最优雅的方法是使用FIRST()
聚合函数。
=FIRST(Fields!Budget.Value, "MyAccountGroupName")
在某些情况下,这不起作用。然后,您需要在描述时将逻辑移动到查询中,或者您可以在报表中使用嵌入式代码。
答案 1 :(得分:0)
我会遵循你的“肮脏的解决方法”方法。您可能可以通过一些花哨的计算在SSRS内部获得结果,但这将是完全模糊的。