SSRS 2016不修改数据集计算每日最小Slot的TOF总和
解决方案
1. 每日TOF总和表达式
在DayGroup对应的单元格中使用以下表达式,可筛选出每个ID当日最小Slot对应的TOF并求和:
=SUM( IIF( Fields!Slot.Value = MIN(Fields!Slot.Value, "DataSet1", Fields!ID.Value & "_" & CStr(Fields!Date.Value)), Fields!TOF.Value, 0 ), "DayGroup" )
- 逻辑说明:通过
MIN(Fields!Slot.Value, "DataSet1", Fields!ID.Value & "_" & CStr(Fields!Date.Value))获取当前ID在当日的最小Slot值,用IIF判断当前行Slot是否等于该最小值,符合条件则累加TOF,否则加0,最后在DayGroup作用域内完成求和。
2. 月度累计TOF表达式
在MonthGroup下的累计单元格中使用以下表达式,实现从当月第一天到当前日期的累计总和:
=SUM( IIF( Fields!Slot.Value = MIN(Fields!Slot.Value, "DataSet1", Fields!ID.Value & "_" & CStr(Fields!Date.Value)) AND Fields!Date.Value <= Fields!Date.Value, Fields!TOF.Value, 0 ), "MonthGroup" )
- 逻辑说明:在每日筛选逻辑的基础上,新增
Fields!Date.Value <= Fields!Date.Value条件,确保只累加当前日期及之前的符合条件数据,最后在MonthGroup作用域内完成求和。
注意事项
- 将
DataSet1替换为你的数据集实际名称; - 若日期格式存在兼容性问题,可调整
CStr(Fields!Date.Value)的格式转换方式,保证ID+日期的组合能唯一标识每个ID的当日数据。
内容的提问来源于stack exchange,提问作者V. Lernout
相关产品推荐
相关产品推荐

