1

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

假设第一组(Account=100 AND Period=201301)Sum([Budget])将生成 200,这是不正确的。如果用户从过滤器中仅选择一个期间,我可以使用平均功能。如果他们选择多个值(例如 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     ...................

请对任何一种方法提出建议。谢谢你。

4

2 回答 2

1

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

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

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

于 2013-02-08T03:23:59.860 回答
0

I would follow your "dirty workaround" approach. You might possibly be able to achieve the result just inside SSRS with some fancy calculations, but it will be totally obscure.

于 2013-02-08T02:59:55.067 回答