我有一个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
的和。如果这说得通的话。
每个Date
的Number
行包含许多数字。但是Date
只显示那一天的最后一个数字,因为在User
中其余的数字不算(但必须显示),所以我想把那个用户所有日期的最后数字相加。Place
也是如此(它是每个用户每天最后一个数字的总和)。
有人能帮我这个忙吗?我尝试了显而易见的(至少对我而言) =Sum(Last(Fields!Number.Value))
,但是(也试图在那些函数中指定组,但没有起到作用,因为)当我试图编译时,我得到了一个错误,它说:
文本框'numberTextbox‘的值表达式在另一个聚合函数(或RunningValue)的参数中包含聚合函数(或RunningValue或RowNumber函数)。聚合函数不能嵌套在其他聚合函数中。
我想这是有道理的。但是我该怎么做呢?
更新:我已经解决了这个问题,我添加了另一个列,并将最后的数字复制到该列中。这样,我就可以显示所有的数字,并对只包含将在sum中包含的数字的列进行求和。我仍然很好奇,如果有人能解决我最初的问题……所以,如果你这样做了,请张贴答案!
发布于 2009-05-06 13:42:28
我不太清楚你到底想做什么。也许像=Last(字段!Number.Value,“组1") +Last(字段!Number.Value,”组2") +Last(字段!Number.Value,“组3"),而不是使用sum函数?
发布于 2009-05-06 13:58:41
要做到这一点,最简单的方法是修改数据集,使其只包含日期字段中显示的记录,这样您就可以只使用一个简单的sum(),而不是尝试做一些奇怪的、可能不起作用的事情。
发布于 2011-12-21 05:53:12
修改数据集可能真的是最简单的解决方案,但如果您真的想在不使查询复杂化的情况下这样做,您可以尝试“自定义聚合”。
具体的技术取决于SSRS的版本,我的理解是,在SSRS 2008之前,它并不能很好地工作。
其思想是,编写一些自定义代码来维护一个包含每个日期的最后一个值的数组。一个函数更新日期的“最后一个值”,另一个函数对数组中的值求和。标头调用后一个函数;在处理标头之前,您共同为每个详细信息行调用前一个函数一次。
Here's a blog,并在SSRS2008中对该技术进行了说明。
它还提供了一些关于如何在SRSS 2005中尝试使其工作的洞察,但显然这并不可靠。
https://stackoverflow.com/questions/829569
复制相似问题