보고 서비스에서 그룹 총계에서 총계를 계산합니다
-
03-07-2019 - |
문제
특정 기준에 따라 테이블에 일부 데이터가 그룹화되어 있으며 각 그룹의 경우 평균 (실제 사례는 조금 더 까다 롭습니다. 해당 그룹에 속하는 각 세부 행의 값 중 일부가 더 까다 롭습니다. 이 평균은 각 그룹 바닥 글수에 표시됩니다. 이 간단한 예를 보자 :
지금 내가 원하는 것은 테이블 바닥 글. 그랜드 총계는 계산해야합니다 첨가 각 그룹의 평균 (예 :이 예에서는 총계는 20 + 15 = 35 여야합니다). 그러나 집계 기능을 중첩 할 수는 없습니다. 어떻게 할 수 있습니까?
해결책
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
예를 들어 DoubleAgggreator의 이름을 지정하십시오. 그런 다음 그룹 표현식을 "code.doubleAggregator.aggregate (avg (fields! collect2.value))"로 바꾸고 "Code.DoubleAggregator.sum ()"로 총 표현식을 바꾸십시오.
다른 팁
두 그룹의 외부 범위 인 테이블 바닥 글에 sum () 함수를 추가하면 모두 함께 합산해야합니다. 조건에서 합산하는 경우,이를 거기에 넣어야 할 수도 있습니다.
불행히도 나는 현재보고 개발 상자에서 멀리 떨어져 있지만 그것은 다음과 같습니다.
= (합
또는
= sum (sum (fields! column1) + sum (fields! column2)))
나는 그것이 2 중 첫 번째라고 확신합니다.
당신은 실제로 할 수는 없지만 속임수를 쓸 수 있습니다. 나는 이것에 대한 해결책을 여기에 뿌렸다.http://dataqueen.unlimitedviz.com/2011/05/ssrs-aggregate-rast-ytd- 또는-last-child-value-in-an-ssas-query/
sum (cint (fields! testValue.value)) 또는 sum (cint (fields! dollaramountofcheck.value), "dataSet1")가 WCF를 통과 할 때 SUM () 함수를 허용하지 않습니다. . 그러나 이것은이 경우 잘 작동합니다.