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
相关产品推荐
相关产品推荐

