首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSRS -返回平均日期为2015年

SSRS -返回平均日期为2015年
EN

Stack Overflow用户
提问于 2015-02-16 09:20:16
回答 1查看 721关注 0票数 1

我已经想了很长一段时间了,但还是找不到答案。

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

当输入“2013年”时,我的报告如下所示:“StartYear”下面的值显示“成本”栏:

代码语言:javascript
复制
Area | 2013 ("Year") | 2014 ("Year") | 2015 ("Year")
A    |     20        |      50       |      25
B    |     15        |      65       |      35
C    |     40        |      70       |      20

在建立报告之前,报告如下所示:

代码语言:javascript
复制
Area     |     [Year]
[Area]   |     [Cost]

我想在这份报告中增加一栏,显示2015年的平均数,但只显示2015年的平均数。

到目前为止,这是我尝试过的,但它带回了一排和全年的平均水平: 20,50和25,而不是25,35和20:

代码语言:javascript
复制
=Sum(IIF(Fields!Year.Value = 2015, Avg(Fields!Cost.Value), 0))

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-16 09:32:11

你需要这样的表达方式:

代码语言:javascript
复制
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing))

如果使用IIf表达式从DataSet中获取子集,则必须将Nothing指定为表达式的假部分,否则只会得到聚合中包含的一组零,从而扭曲结果。

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

代码语言:javascript
复制
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "DataSet1")

评论后的编辑

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

代码语言:javascript
复制
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "Area")

假设区域是行组的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28538073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档