【问题标题】:How to select the latest year in the dataset?如何选择数据集中的最新年份?
【发布时间】:2018-10-01 13:52:36
【问题描述】:

我有一个包含 3 年数据的数据集,我只希望数据集中的最新年份用于 tablix,在本例中为 2019 年。

在这种情况下,我只想按年级计算 2019 年发生的 IncidentID 数量。

数据集:

期望的结果:

  • 计算 IncidentID(它们是唯一的)是计算总和的最佳方法吗?
  • 有哪些方法可以在 SSRS 中实现预期结果?

我不确定我是要过滤组属性并尝试设置最大日期,还是使用其他功能。每年数据集都会添加一个新的年份,年份不是硬编码的。

谢谢。

【问题讨论】:

  • 我想您可以设置一个包含最大年份的附加数据集,并将其用作可用于过滤报告的参数来源?
  • 谢谢@JonTout。报告中有些元素需要多年,而其他元素只需要一年。我正在使用的特定数据集包含三年的数据,但我只希望它显示最新的年份。 SSRS有可能吗?我认为 Max{schoolyear] 可能会起作用,但当我尝试该表达式时,它却让我没有数据。
  • 此报告是否有多个表和一个数据集?如果您有多个表,则可以使用静态值进行过滤,我认为您不能使用聚合作为表过滤器。
  • 此报告有多个表格和多个数据集。我认为它需要在桌面上进行过滤,但我还不能让它工作。感谢您的帮助。

标签: reporting-services ssrs-2012 ssrs-2016


【解决方案1】:

您可以使用这样的表达式来获得条件计数:

=Count(IIf(Fields!SchoolYear.Value = Max(Fields!SchoolYear.Value, "GradeRowGroup"), 1, Nothing))

这将检查每个组中的最大年份。您可以将行组或整个数据集用于Max 函数中的范围。 IIf 语句为学年匹配最大值的行返回 1。然后Count 只是聚合这些。

【讨论】:

  • 谢谢!一位同事对数据条形图数据(如下所列)得出了非常相似的结果。感谢您的解释和您花时间提供帮助!
【解决方案2】:

我认为有两种实用的方法:

您可以将学年设为参数。如果您想(默认)打开实际年份,您可以转到学年参数右键单击>参数属性>默认值>指定值。应该是这样的:

[School Year].[Year].&[2018]

把上面的表达式改成如下:

="[学年].[年].&[" & CStr(Year(Now())) & "]"

这样,您的报告会默认打开实际的学年,您也可以选择其他学年以获取信息。在 tablix 中添加您的 Count()Sum() 以及您需要的所有其他内容。

或者您可以在 tablix 中添加一个过滤器(这更静态),例如:

'Expression
=Fields!SchoolYear.Value = Year(Now()) 'Integer
=Fields!SchoolYear.Value = CStr(Year(Now())) 'String
'Type
Boolean
'Value
True

【讨论】:

  • 谢谢!该报告有各种表格,并且它们使用多个数据集,其中包含不同年份的数据,因此我不确定参数想法是否适用于这种特定情况,感谢您抽出宝贵时间帮助我!
【解决方案3】:

一位同事帮我解决了这个问题。我正在使用数据栏来显示汇总,他说在图表数据上放置一个表达式并且它起作用了。

=Sum(IIF(MAX(Fields!SchoolYear.Value)=Fields!SchoolYear.Value,Fields!NumDays.Value,0))

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多