MS SSRS Tablix组总数的平均值

时间:2017-01-19 17:08:28

标签: reporting-services ssrs-tablix

我有一个SQL Server Report Builder tablix报告,用于评估一段时间内的销售活动。

按公司划分的行,列按日期分组。像这样:

                2015   2016   2017
Company1          10     12      1
Company2           6      5      0
Company3           8     10      7

(该报告还将列扩展为几个月)

我想添加一个列,或为背景着色,根据每年的平均值计算得出。例如,如果我包括2017年,则Company1平均为7.6 /年。我希望能够说2015年是平均值的131%,2016年是平均值的157%,2017年是平均值的13%。如果我可以将当​​前年份从平均值中排除,则可以获得奖励积分。

结果可能如下所示:

                2015          2016         2017
Company1          10 (131%)     12 (157%)     1 (7.6%)
Company2           6 (%%)        5 (%%)       0 (%%)
Company3           8 (%%)       10 (%%)       7 (%%)

由于源数据每行有一次销售,并且Tablix是按日期创建分组计数的,因此我似乎无法运行平均值,这只是给了我" 1",因为我指望计数列。源数据看起来像这样:

CompanyName  Date      SalesRep      Amt     Count
Company1,    1/1/2015, salesrepname, 50000,    1
Company1,    2/1/2015, salesrepname, 20000,    1
Company1,    3/1/2015, salesrepname, 50000,    1
Company1,    4/1/2015, salesrepname, 10000,    1
Company1,    5/1/2015, salesrepname,  5000,    1
...

我如何获得每年的平均值?

2 个答案:

答案 0 :(得分:0)

如果您只是对公司和年份进行分组,则可以使用组名覆盖聚合的范围。但是,SSRS没有办法指定组的组合。因此,在您的情况下,您需要以另一种方式提供这些子计算。通常最好在SQL中执行此操作。您可以将子查询添加到现有查询(首选)或添加其他数据集。如果您使用单独的数据集,则还必须使用Lookup函数匹配值。

如果您尝试提供一些详细的解决方法,例如自定义代码或引用文本框,则会变得难以维护并且效率非常低。

答案 1 :(得分:0)

不会像这样的公式吗?

=sum(Fields!count.Value)/
(sum(Fields!count.Value,"Year")/countdistinct(Fields!CompanyName.Value,"Year"))

假设您的列组名称为Year。