Reporting services MS SSRS Tablix组总数的平均值

Reporting services MS SSRS Tablix组总数的平均值,reporting-services,ssrs-tablix,Reporting Services,Ssrs Tablix,我有一个SQL Server Report Builder tablix报告,用于评估一段时间内的销售活动 行按公司,列按日期分组。大概是这样的: 2015 2016 2017 Company1 10 12 1 Company2 6 5 0 Company3 8 10 7 2015 2016

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

行按公司,列按日期分组。大概是这样的:

                2015   2016   2017
Company1          10     12      1
Company2           6      5      0
Company3           8     10      7
                2015          2016         2017
Company1          10 (131%)     12 (157%)     1 (7.6%)
Company2           6 (%%)        5 (%%)       0 (%%)
Company3           8 (%%)       10 (%%)       7 (%%)
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
...
(报告还将列扩展为月份)

我想添加一个列,或者给背景上色,根据每年总数的平均值计算。例如,如果将2017年计算在内,1号公司的平均年薪为7.6英镑。我想说的是,2015年是平均水平的131%,2016年是平均水平的157%,2017年是平均水平的13%。如果我可以将本年度从平均值中排除,则可获得奖励积分

结果可能如下所示:

                2015   2016   2017
Company1          10     12      1
Company2           6      5      0
Company3           8     10      7
                2015          2016         2017
Company1          10 (131%)     12 (157%)     1 (7.6%)
Company2           6 (%%)        5 (%%)       0 (%%)
Company3           8 (%%)       10 (%%)       7 (%%)
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
...
由于源数据每行有一次销售,而tablix是创建按日期分组计数的工具,因此我似乎不能只运行一个平均值,它只给我“1”,因为我是在计数列上计数的。源数据如下所示:

                2015   2016   2017
Company1          10     12      1
Company2           6      5      0
Company3           8     10      7
                2015          2016         2017
Company1          10 (131%)     12 (157%)     1 (7.6%)
Company2           6 (%%)        5 (%%)       0 (%%)
Company3           8 (%%)       10 (%%)       7 (%%)
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
...

如何获得每年的平均值?

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


如果你试图想出一个复杂的解决办法,比如自定义代码或引用文本框,那么它将变得很难维护,而且效率很低。

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


如果你试图想出一个复杂的解决办法,比如自定义代码或引用文本框,那么它将变得很难维护,而且效率很低。

像这样的公式不管用吗

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

假设列组名为Year。

这样的公式行得通吗

=sum(Fields!count.Value)/
(sum(Fields!count.Value,"Year")/countdistinct(Fields!CompanyName.Value,"Year"))
假设列组名为Year。

只有当“Year”是表/矩阵中的唯一组时,这才有效。只有当“Year”是表/矩阵中的唯一组时,这才有效。