2

我有一个 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 函数)。聚合函数不能嵌套在其他聚合函数中。

我想这有点道理......但是我该怎么做呢?


更新:我通过添加另一列并将最后的数字复制到该列中解决了这个问题。这样我可以显示所有的数字,并对只包含那些将在总和中的列进行求和。我仍然很好奇是否有人可以解决我原来的问题......所以如果你有,请发布答案!

4

3 回答 3

0

不确定我是否完全理解您要执行的操作。可能类似于 =Last(Fields!Number.Value,"Group 1") + Last(Fields!Number.Value,"Group 2") + Last(Fields!Number.Value,"Group 3"),而不是使用总和功能?

于 2009-05-06T13:42:28.127 回答
0

最简单的方法是修改您的数据集,使其仅包含您在日期字段中显示的记录,这样您就可以使用简单的 sum() 而不是尝试做一些奇怪而棘手的事情,并且可能无法正常工作。

于 2009-05-06T13:58:41.380 回答
0

修改数据集可能确实是最简单的解决方案,但如果您真的想在不使查询复杂化的情况下这样做,您可以尝试“自定义聚合”。

确切的技术取决于 SSRS 的版本,我的理解是,在 SSRS 2008 之前它并没有那么好用。

这个想法是,您编写一些自定义代码来维护一个包含每个日期的最后一个值的数组。一个函数更新日期的“最后一个值”,另一个函数对数组中的值求和。您的标头调用后一个函数;您合谋导致在处理标题之前为每个详细信息行调用一次前一个函数。

这是一个博客,其中包含解释 SSRS 2008 中的技术的文章。

它还提供了一些关于如何尝试在 SRSS 2005 中进行这项工作的见解,但显然这并不可靠。

于 2011-12-20T21:53:11.600 回答