Reporting services 删除SSRS报告组中的冗余值

Reporting services 删除SSRS报告组中的冗余值,reporting-services,grouping,cumulative-sum,Reporting Services,Grouping,Cumulative Sum,我正在使用以下数据集开发SSRS报告。“Period”有一个过滤器。它是一个多选过滤器。数据按“帐户”字段分组。我需要显示每组的总费用(这很容易)。我还需要在同一组级别上显示“预算”。问题在于预算数据是冗余的-见下文 假设对于第一组(Account=100,Period=201301),Sum([Budget])将生成200,这是不正确的。如果用户只从过滤器中选择一个周期,我可以使用平均值函数。如果他们选择多个值(例如201301201302),则平均值将是(100+100+150+150)/4

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

假设对于第一组(Account=100,Period=201301),
Sum([Budget])
将生成200,这是不正确的。如果用户只从过滤器中选择一个周期,我可以使用平均值函数。如果他们选择多个值(例如201301201302),则平均值将是(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])
w/o担心重复。更新后的数据集如下所示:

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     ...................

请为这两种方法提供建议。谢谢。

我会遵循你的“肮脏变通”方法。通过一些奇特的计算,您可能能够在SSR内部获得结果,但这将是完全不清楚的。

我将遵循您的“肮脏变通”方法。通过一些奇特的计算,您可能可以在SSR内部获得结果,但这将是完全不清楚的。

最优雅的方法是使用聚合函数

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

在某些情况下,这是行不通的。然后,您需要按照描述将逻辑移动到查询中,或者您可以在报表中使用嵌入的代码。

最优雅的方法是使用聚合函数

=FIRST(Fields!Budget.Value, "MyAccountGroupName")
在某些情况下,这是行不通的。然后,您需要按照描述将逻辑移到查询中,或者您可以在报表中使用嵌入的代码