SSRS - 返回日期为 2015 年的平均值
SSRS - Returning the average where date is 2015
我已经尝试解决这个问题一段时间了,只是找不到答案。
我在 SSRS 中有一个报告,其中一个列组分配给了 "Year",该列根据用户在 StartYear 中输入的参数进行扩展。如果用户输入“2013”,报告将提取从 2013 年到 2015 年的所有数据,这意味着将有 3 个同名列 ("Cost")。
当输入 StartYear 作为“2013”时,我的报告看起来像这样"Year" 下方的值显示 "Cost" 列:
Area | 2013 ("Year") | 2014 ("Year") | 2015 ("Year")
A | 20 | 50 | 25
B | 15 | 65 | 35
C | 40 | 70 | 20
在构建报告之前,报告看起来像这样:
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
指定为表达式的 False 部分,否则你只会得到一堆包含在聚合中的零,从而扭曲结果。
这假定聚合 运行 在任何特定组范围之外 - 您始终可以向表达式添加 Scope 以确保您正在检查整个数据集:
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "DataSet1")
评论后编辑
要扩展上面的范围注释,您可以在行组级别将聚合指定为 运行,方法是将行组名称作为参数添加到表达式中:
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "Area")
假设区域是行组的名称。
我已经尝试解决这个问题一段时间了,只是找不到答案。
我在 SSRS 中有一个报告,其中一个列组分配给了 "Year",该列根据用户在 StartYear 中输入的参数进行扩展。如果用户输入“2013”,报告将提取从 2013 年到 2015 年的所有数据,这意味着将有 3 个同名列 ("Cost")。
当输入 StartYear 作为“2013”时,我的报告看起来像这样"Year" 下方的值显示 "Cost" 列:
Area | 2013 ("Year") | 2014 ("Year") | 2015 ("Year")
A | 20 | 50 | 25
B | 15 | 65 | 35
C | 40 | 70 | 20
在构建报告之前,报告看起来像这样:
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
指定为表达式的 False 部分,否则你只会得到一堆包含在聚合中的零,从而扭曲结果。
这假定聚合 运行 在任何特定组范围之外 - 您始终可以向表达式添加 Scope 以确保您正在检查整个数据集:
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "DataSet1")
评论后编辑
要扩展上面的范围注释,您可以在行组级别将聚合指定为 运行,方法是将行组名称作为参数添加到表达式中:
=Avg(IIF(Fields!Year.Value = 2015, Fields!Cost.Value, Nothing), "Area")
假设区域是行组的名称。