SSRS技术求助:按日期过滤数据集并添加历史总计列
解决SSRS透视表中添加昨日总计列的问题
我来帮你搞定这个SSRS的问题!你已经搭建好了展示5/15数据的透视表,现在要加一列显示5/14的总计,之前的表达式出问题主要是因为聚合范围没选对,咱们一步步来修正:
问题根源分析
你之前写的两个表达式都有问题:
- 第一个表达式
=SUM(IIF(Fields!DATE.Value="5/14/2018",Fields!QUANTITY.Value,0)):因为透视表默认的聚合范围是当前筛选后的5/15数据,在这个范围内找不到5/14的记录,所以结果一直是0。 - 第二个表达式语法本身就错了(IIF缺少第三个参数),而且就算修正,同样会因为聚合范围限制,无法跨日期计算总和。
正确的表达式
要让SUM能跨日期计算指定NAME的5/14总计,你需要指定聚合作用域,也就是告诉SSRS要在整个NAME分组的所有数据里筛选计算。
如果你的DATE字段是字符串类型,用这个表达式:
=SUM(IIF(Fields!DATE.Value = "5/14/2018", Fields!QUANTITY.Value, 0), "NAME")
如果DATE是日期类型(更推荐这种方式,避免字符串格式问题),可以用动态计算昨日的方式(不用硬写日期):
=SUM(IIF(Fields!DATE.Value = DateAdd(DateInterval.Day, -1, Today()), Fields!QUANTITY.Value, 0), "NAME")
注意:这里的
"NAME"是你透视表中行组的名称,如果你的行组命名不是这个,要改成实际的组名(可以在报表设计器的“行组”面板里查看)。
效果验证
把这个表达式添加到新列后,就能得到你想要的结果:
| NAME | YESTERDAY TOTAL | JAN | FEB | TOTAL |
|---|---|---|---|---|
| John | 29 | 10 | 25 | 35 |
| Tim | 13 | 5 | 15 | 20 |
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

