Reporting services MS SSRS Tablix组总数的平均值
我有一个SQL Server Report Builder 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
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”是表/矩阵中的唯一组时,这才有效。