You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSRS表达式如何获取数据集最新月份对应的上一年同期数值

SSRS 上年同期值表达式实现方案

方案1:全局匹配固定最新同期值(适配你的需求场景)

如果你的Prior Year Actual列固定取最新月份对应的上年同期数值,直接使用以下Lookup匹配表达式即可:

=Lookup(
    (Max(Fields!年份.Value, "你的数据集名称") - 1) & "-" & Max(Fields!月份.Value, "你的数据集名称"),
    Fields!年份.Value & "-" & Fields!月份.Value,
    Fields!实际值.Value,
    "你的数据集名称"
)
  • 替换说明:将代码中的你的数据集名称替换为你实际的数据集名称,年份、月份、实际值替换为你数据集中对应的字段名即可
  • 逻辑说明:先提取数据集内最大年份(即示例中的2021)减1得到上年年份,拼接最大月份(即示例中的4)作为匹配键,在全量数据集中匹配到相同年月的实际值,就能得到2020年4月的数值22

如果你的数据集存储的是完整日期字段,没有拆分年、月,可以用DateAdd函数简化写法:

=Lookup(
    DateAdd("yyyy", -1, Max(Fields!完整日期.Value, "你的数据集名称")),
    Fields!完整日期.Value,
    Fields!实际值.Value,
    "你的数据集名称"
)

方案2:矩阵动态同期匹配(适用年月为列维度的交叉表)

如果你使用矩阵展示多期数据,每一期都需要自动匹配上年同期值,可以用偏移周期的Previous函数:

=IIF(
    IsNothing(Previous(Fields!实际值.Value, "年月分组名称", 12)),
    0,
    Previous(Fields!实际值.Value, "年月分组名称", 12)
)
  • 替换说明:年月分组名称替换为你矩阵中按年月分组的组名,12表示往前偏移12个周期(即12个月),无匹配值时默认返回0,可按需调整

空值兼容优化

如果需要避免上年无数据时显示#Error,可以套一层空值判断:

=IIF(
    IsNothing(Lookup((Max(Fields!年份.Value, "数据集名")-1) & "-" & Max(Fields!月份.Value, "数据集名"), Fields!年份.Value & "-" & Fields!月份.Value, Fields!实际值.Value, "数据集名")),
    0,
    Lookup((Max(Fields!年份.Value, "数据集名")-1) & "-" & Max(Fields!月份.Value, "数据集名"), Fields!年份.Value & "-" & Fields!月份.Value, Fields!实际值.Value, "数据集名")
)

内容的提问来源于stack exchange,提问作者BuffaloBill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 13:39:02