我已经想了很长一段时间了,但还是找不到答案。
我在SSRS中有一个报告,其中有一个列组指定为“StartYear”,该列根据用户输入到的参数展开。如果用户输入" 2013“,报告将提取2013至2015年期间的所有数据,这意味着将有3个同名的列(”成本“)。
当输入“2013年”时,我的报告如下所示:“StartYear”下面的值显示“成本”栏:
Area | 2013 ("Year") | 2014 ("Year") | 2015 ("Year")
A | 20 | 50 | 25
B | 15 | 65 | 35
C | 40 | 70 | 20在建立报告之前,报告如下所示:
Area | [Year]
[Area] | [Cost]我想在这份报告中增加一栏,显示2015年的平均数,但只显示2015年的平均数。
到目前为止,这是我尝试过的,但它带回了一排和全年的平均水平: 20,50和25,而不是25,35和20:
=Sum(IIF(Fields!Year.Value = 2015, Avg(Fields!Cost.Value), 0))任何帮助都将不胜感激。
发布于 2015-02-16 09:32:11
你需要这样的表达方式:
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing))如果使用IIf表达式从DataSet中获取子集,则必须将Nothing指定为表达式的假部分,否则只会得到聚合中包含的一组零,从而扭曲结果。
这假设聚合运行在任何特定的组作用域之外--您可以始终向表达式中添加一个作用域,以确保您正在检查整个DataSet:
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "DataSet1")评论后的编辑
要扩展上面的范围注释,可以通过将行组名称作为参数添加到表达式中来指定要在行组级别运行的聚合:
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "Area")假设区域是行组的名称。
https://stackoverflow.com/questions/28538073
复制相似问题