Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services SSRS-返回日期为2015年的平均值_Reporting Services_Ssrs 2008_Ssrs 2008 R2 - Fatal编程技术网

Reporting services SSRS-返回日期为2015年的平均值

Reporting services SSRS-返回日期为2015年的平均值,reporting-services,ssrs-2008,ssrs-2008-r2,Reporting Services,Ssrs 2008,Ssrs 2008 R2,我已经想了一段时间了,只是到处都找不到答案 我在SSRS中有一份报告,其中一个列组被指定为“年”,该列根据用户在StartYear中输入的参数进行扩展。如果用户输入“2013”,报告将提取2013年至2015年的所有数据,这意味着有3列名称相同(“成本”) 当输入StartYear为“2013”时,我的报告类似于此。“年”下的值显示“成本”列: 在生成报表之前,报表的外观如下所示: Area | [Year] [Area] | [Cost] 我想在此报告中添加一列,

我已经想了一段时间了,只是到处都找不到答案

我在SSRS中有一份报告,其中一个列组被指定为“年”,该列根据用户在StartYear中输入的参数进行扩展。如果用户输入“2013”,报告将提取2013年至2015年的所有数据,这意味着有3列名称相同(“成本”)

当输入StartYear为“2013”时,我的报告类似于此。“年”下的值显示“成本”列:

在生成报表之前,报表的外观如下所示:

Area     |     [Year]
[Area]   |     [Cost]
我想在此报告中添加一列,显示2015年的平均值

这是我迄今为止尝试过的,但它恢复了一排和全年的平均值:20、50和25,而不是25、35和20:

=Sum(IIF(Fields!Year.Value = 2015, Avg(Fields!Cost.Value), 0))

任何帮助都将不胜感激。

您需要这样的表达:

=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing))
如果使用
IIf
表达式从数据集中获取子集,则必须将
Nothing
指定为表达式的假部分,否则只会在聚合中包含一组零,从而使结果发生倾斜

这假设聚合在任何特定组作用域之外运行-您始终可以向表达式添加作用域,以确保检查整个数据集:

=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "DataSet1")
评论后编辑

要展开上面的范围注释,可以通过将行组名称作为参数添加到表达式中来指定要在行组级别运行的聚合:

=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "Area")

假设Area是行组的名称。

Hi-Ian,您的脚本的工作方式与所要求的完全相同,但是,我是按区域(行组)分组的。如果我使用您的脚本,它将获得整个列的平均值(如所要求的),而不是每个区域的平均值。请您用脚本更新您的答案,以计算2015年的平均值以及每个地区组的平均值?谢谢你,@PKirby。我在上面加了一条评论。如果您仍然不走运,可以在设计视图中添加表的屏幕截图,以添加更多的上下文?
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "Area")