SSRS报表中如何聚合各产品Last()返回的期初库存值?
SSRS 报表:各产品最后一期期初库存求和解决方法
方法一:数据集预处理(推荐)
直接在SQL查询中计算出每个产品的最后一期期初库存,报表端直接求和即可,规避SSRS聚合嵌套的限制。
示例SQL(根据你的实际字段调整):
WITH ProductLastStock AS ( SELECT [产品唯一标识字段], -- 替换为你的产品ID/名称字段 CustProdAdj_new_openingstockValue, -- 按产品分组,按期数/日期倒序排名,取每个产品的最后一条记录 ROW_NUMBER() OVER (PARTITION BY [产品唯一标识字段] ORDER BY [期数字段名] DESC) AS StockRank FROM [你的数据集表名] ) SELECT [产品唯一标识字段], CustProdAdj_new_openingstockValue AS LastOpeningStock FROM ProductLastStock WHERE StockRank = 1
修改数据集后,报表中直接使用表达式:=Sum(Fields!LastOpeningStock.Value)
方法二:报表组变量聚合
如果无法修改数据集,可通过组变量存储每个产品的最后一期库存,再对变量求和:
- 打开产品分组的组属性,切换到「变量」标签,添加变量:
- 名称:
LastOpeningStock - 表达式:
=Last(Fields!CustProdAdj_new_openingstockValue.Value)
- 名称:
- 在总计行的求和单元格中,使用表达式:
=Sum(Variables!LastOpeningStock.Value, "产品组名称")
注意:产品组名称需替换为你报表中产品组的实际名称(在组属性的「常规」标签查看)
关键说明
- SSRS不支持直接嵌套聚合函数(如
Sum(Last(...))),因为Last是组级聚合,Sum需要在更高层级对组聚合结果再计算 - 确保产品组的分组依据是唯一的产品标识,避免同一产品重复分组
内容的提问来源于stack exchange,提问作者Hawiza-e
相关产品推荐
相关产品推荐

