首页 > 解决方案 > SSRS 矩阵显示动态列组之间的差异

问题描述

==根据答案编辑==

提供的两个答案都以不同的方式给出了所需的结果。

@Hannover_Fist 的答案显示效果更好,但设计更加严格,它目前适用于周六至周六的报告,但如果重复日期跨度发生变化,则需要对每个报告进行编辑

@niktrs 答案显示不干净,即使顶行非常小,但具有更大的灵活性,并且与最新的负 1 列相比,显示最新的列具有更多的灵活性

==根据答案编辑==

我有一个 SSRS 矩阵,可以从数据库中动态提取值列表。该矩阵将每个值表示为一行,并将日期戳周期表示为不同的列。数据库表由存储过程填充,该存储过程每周运行大量查询并将其快照到静态表中。

报告为每一行显示每个日期戳的记录总和,并进行排序,以便最新的日期戳显示为最新记录。IE

报告 21 年 3 月 4 日 27/03/21 20/03/2021
报告1 1000 990 800
报告2 100 2000 2500

我想添加一个显示在矩阵元素左侧的计算列,该列显示最新日期戳和最新(减 1)日期戳之间的差异,如下所示:

报告 改变 21 年 3 月 4 日 27/03/21 20/03/2021
报告1 +10 1000 990 800
报告2 -1900 100 2000 2500

此日期戳列每周都会动态变化,因此每 7 天会比较不同的列,即

第 1 周将是 2021 年 3 月 4 日,而 2021 年 3 月 27 日

第 2 周将是 2021 年 4 月 10 日,而 2021 年 3 月 4 日是

第 3 周将是 2021 年 4 月 17 日,而 2021 年 4 月 10 日

我查看了以下选项,但这些选项允许我查看矩阵的第一列和最后一列,或者假设分组是静态的/在我的 7 天的更长时间内保持静态。

如何减去ssrs矩阵中的相邻列

找出 ssrs 矩阵中两列之间的差异

SSRS:MATRIX 中两列之间的动态差异

我无法找到满足比较动态列组要求的解决方案,该解决方案定期更改

标签: sql-serverreporting-services

解决方案


实际上,您不需要使用列分组,您可以为每个报告使用整个数据集,然后过滤最近一周和之前的一周。

如果我们告诉,上周六是最后一个日期,而前一周是要比较的日期,你可以使用如下表达式

=SUM(IIF(Fields.DateStamp.Value = TODAY.AddDays(0 - TODAY.DayOfWeek - 1), Fields.COUNT_FIELD.Value, 0)) - 
 SUM(IIF(Fields.DateStamp.Value = TODAY.AddDays(0 - TODAY.DayOfWeek - 8), Fields.COUNT_FIELD.Value, 0))

这会将记录的 COUNT_FIELD 与上周六的 DATE_STAMP 相加,并减去记录的 COUNT_FIELD 与上周六的 DATE_STAMP 的总和。


推荐阅读