【问题标题】:Display Only the Most Current Record on Report仅在报告中显示最新记录
【发布时间】:2016-04-16 01:27:06
【问题描述】:

我们有一个输出表 A 的报表。我们将表 B 添加到报表模型中(我们将一些字段添加到表 B 的报表中),这是与表 A 的多对一关系。现在当我们运行报告中,我们得到了多行,这是意料之中的,因为表 A 和表 B 之间的关系。

问题是,我们只想在报表上显示表 B 的最新记录,基于“创建日期”。

我尝试设置一个 MAX(!fields.CreationDate)

我查到的信息如:https://social.msdn.microsoft.com/forums/sqlserver/en-US/2bc16c90-21d6-4c03-a17f-4a5922db76fe/displaying-records-by-max-date-in-ssrs

但是当我做这样的事情时,我得到一个“不能使用聚合函数......”的错误。

如果这是针对 TableB 的 SQL 语句,则将按照以下方式仅显示最近的记录:

选择不同的 [ID]、[PID]、[InputDate]、[Changed_Date] 从 (选择 [ID]、[PID]、[InputDate]、[Changed_Date]、 dense_rank() over (按 PID order by Changed_Date desc 分区) 作为 MyRank 从表 B ) 作为 RankSelect 我的排名 = 1 按 PID 排序

这为我提供了 TableB 的最新记录。我知道从技术上讲我可以向报表模型添加视图或其他内容,但我不想这样做,因为另一个运行的报表可能需要 TableB 中所有记录的历史记录。所以我希望在不触及报表模型的情况下,以某种方式将上述结果合并到报表中。其中仅将 TableB 中的最新记录合并到报告中。 对于我们如何将报告限制为仅显示表 B 中的最新日期记录的任何帮助,我们将不胜感激。

【问题讨论】:

    标签: reporting-services ssrs-2008 ssrs-2008-r2


    【解决方案1】:

    对于您的表 B,根据 MAX 日期超过 CreationDate 设置 FILTER >数据集

    这将仅显示 CreationDate 与数据集中的 MAX CreationDate 匹配的记录。

    【讨论】:

    • 谢谢以上,但是当我使用过滤器时,我收到以下错误:“数据集'DataSet1'的FilterValue包含聚合函数。聚合函数不能用于数据集过滤器或数据区域过滤器。”将过滤器应用于 Tablix 过滤器或数据集过滤器时出现此错误。
    【解决方案2】:

    我找不到过滤报表本身数据的解决方案,因此我从报表模型中删除了 TableB,并将其替换为 TableB 视图,该视图仅返回链接到 TableA 的最新记录。不理想,因为我知道在某些时候他们会要求一份报告以“显示所有条目”来自 TableB,但稍后会越过那座桥:-)

    【讨论】:

      猜你喜欢
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2015-03-20
      • 2022-01-11
      相关资源
      最近更新 更多