我有一个 rdlc 报告文件,我正在尝试计算总和,该总和只能包含每组中的最后一项。我有一张类似这样的桌子:
Place = ? (Group header 1)
User = ? (Group header 2)
Date =Last(Fields!Number.Value) (Group header 3)
Number =Fields!Number.Value (Detail row)
所以,换句话说,在
User
那里,我想要 Date
的总和...如果这有意义的话...
Number
行每个Date
包含许多数字。但是 Date
仅显示当天的最后一个数字,因为其余的数字不算(但必须显示) 在 User
中,我想总结该用户所有日期的最后一个数字。与 Place
相同(这将是每个用户每天的最后一个数字的总和)。
有人可以帮我解决这个问题吗?我尝试了明显的(至少对我来说)
=Sum(Last(Fields!Number.Value))
,但是(也尝试在这些函数中指定组,但没有产生任何影响,因为)当我尝试编译时出现错误,其中显示:
文本框“numberTextbox”的值表达式在另一个聚合函数(或 RunningValue)的参数中包含聚合函数(或 RunningValue 或 RowNumber 函数)。聚合函数不能嵌套在其他聚合函数中。
我认为这是有道理的......但是我该怎么做呢?
更新:我通过添加另一列并将最后的数字复制到该列中解决了这个问题。这样我就可以显示所有数字,并对仅包含要包含在总和中的数字的列进行求和。我仍然很好奇是否有人能解决我原来的问题...所以如果有的话请发布答案!
不确定我是否完全理解你想要做什么。也许像=Last(Fields!Number.Value,"Group 1") + Last(Fields!Number.Value,"Group 2") + Last(Fields!Number.Value,"Group 3"),而不是使用总和功能?
最简单的方法是修改数据集以仅包含在日期字段中显示的记录,这样您可以只使用简单的 sum() 而不是尝试做一些奇怪和扭曲的事情,并且可能不起作用.
修改数据集可能确实是最简单的解决方案,但如果您真的想在不使查询复杂化的情况下执行此操作,您可以尝试“自定义聚合”。
具体的技术取决于 SSRS 的版本,我的理解是它在 SSRS 2008 之前并没有真正发挥作用。
这个想法是,您编写一些自定义代码来维护一个包含每个日期的最后一个值的数组。一个函数更新日期的“最后一个值”,另一个函数对数组中的值求和。您的标头调用后一个函数;您合谋导致在处理标题之前为每个详细信息行调用一次前一个函数。
这里有一篇博客,其中有一篇文章解释了 SSRS 2008 中的技术。
它还提供了一些关于如何尝试在 SRSS 2005 中实现此功能的见解,但显然这并不那么可靠。