我有一些数据按照某个标准分组在一个表中,并且对于每个组,它计算的是平均值 - 井,真实情况有点棘手 - 来自属于该值的每个细节行的值组。此平均值显示在每个组页脚行中。让我们看看这个简单的例子:
我现在想要的是在表格页脚上显示总计。总计应该通过添加每个组的平均值来计算(例如,在这个例子中,总计应该是20 + 15 = 35)。但是,我无法嵌套聚合函数。我该怎么办?
答案 0 :(得分:3)
您只需要在表格页脚中添加SUM()函数,该表格页脚是两个组的外部范围,并将它们汇总在一起。如果你在条件上求和,你可能还需要把它放在那里。
答案 1 :(得分:2)
Reporting Services(2005年,也许是2008年)也不直接支持聚合聚合。
使用自定义报表程序集,代码引用和命名对象(报表属性,引用),您可以自己聚合这些值。
您的代码可能如下所示:
Public Sub New()
m_valueTable = New DataTable(tableName:="DoubleValueList")
'Type reference to System.Double
Dim doubleType = Type.GetType(typeName:="System.Double")
' Add a single Double column to hold values
m_valueTable.Columns.Add(columnName:="Value", type:=doubleType)
' Add aggregation column
m_sumColumn = m_valueTable.Columns.Add(columnName:="Sum", type:=doubleType, expression:="Sum(Value)")
End Sub
Public Function Aggregate(ByVal value As Double) As Double
' Appends a row using a 1-element object array.
' If there will be more than 1 column, more values need to be supplied respectively.
m_valueTable.Rows.Add(value)
Aggregate = value
End Function
Public ReadOnly Property Sum() As Double
Get
If 0 = m_valueTable.Rows.Count Then
Sum = 0
Else
Sum = CDbl(m_valueTable.Rows(0)(m_sumColumn))
End If
End Get
End Property
为您举例说明DoubleAggregator。然后用“Code.DoubleAggregator.Aggregate(Avg(Fields!Column2.Value))”替换组表达式,用“Code.DoubleAggregator.Sum()”替换Total的表达式。
答案 2 :(得分:1)
不幸的是,我现在远离我的报告开发框,但它是:
=(sum(Fields!Column1 + sum(Fields!Column2))
或
= SUM(sum(Fields!Column1)+ sum(Fields!Column2))
我很确定这是2中的第一个。
答案 3 :(得分:1)
你不能真的,但你可以欺骗它。我在这里解决了这个问题: http://dataqueen.unlimitedviz.com/2011/05/ssrs-aggregate-last-ytd-or-last-child-value-in-an-ssas-query/
答案 4 :(得分:1)
您可以按照以下方式执行操作: 总和(CINT(领域!TestValue.Value)) 或者总和(CInt(Fields!DollarAmountOfCheck.Value),“DataSet1”) 有时当数据通过WCF时,它不接受Sum()函数。但在这种情况下,这种方法很好。