我有一个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
...
我如何获得每年的平均值?
答案 0 :(得分:0)
如果您只是对公司和年份进行分组,则可以使用组名覆盖聚合的范围。但是,SSRS没有办法指定组的组合。因此,在您的情况下,您需要以另一种方式提供这些子计算。通常最好在SQL中执行此操作。您可以将子查询添加到现有查询(首选)或添加其他数据集。如果您使用单独的数据集,则还必须使用Lookup
函数匹配值。
如果您尝试提供一些详细的解决方法,例如自定义代码或引用文本框,则会变得难以维护并且效率非常低。
答案 1 :(得分:0)
不会像这样的公式吗?
=sum(Fields!count.Value)/
(sum(Fields!count.Value,"Year")/countdistinct(Fields!CompanyName.Value,"Year"))
假设您的列组名称为Year。