Frage

Ich habe einige Daten in einer Tabelle nach bestimmten Kriterien gruppiert und für jede Gruppe es durchschnittlich -well berechnet wird, ist der eigentliche Fall ein bisschen mehr tricky- der Werte von jedem der Detailzeilen, die derjenigen gehören Gruppe. Dieser Mittelwert wird in jeder Gruppe Fußzeilen gezeigt. Lassen Sie sich dieses einfache Beispiel sehen:

Report Tabelle

Was will ich jetzt eine Gesamtsumme auf der Seite Tabellenfuß zeigen . Die Gesamtsumme sollte von berechnet werden, indem jede Gruppe durchschnittlich (beispielsweise in diesem Beispiel die Gesamtsumme + sein sollte 20 15 = 35). Allerdings kann ich nicht verschachtelt Aggregatfunktionen. Wie kann ich tun?

War es hilfreich?

Lösung

Reporting Services (2005, vielleicht auch 2008) unterstützt keine Aggregate von Aggregaten direkt.

Verwenden Sie einen benutzerdefinierten Bericht Montage, Codereferenzen und benannte Objekte (Berichtseigenschaften, Referenzen), die Ihnen erlauben, sich um die Werte zu aggregieren.

Der Code könnte wie folgt aussehen:

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

Name Sie zum Beispiel DoubleAggregator verweisen. Dann ersetzen Sie die Gruppe Ausdrücke mit "Code.DoubleAggregator.Aggregate (Avg (Fields! Column2.Value))" und der Ausdruck für Total mit "Code.DoubleAggregator.Sum ()".

Andere Tipps

Sie müssen nur die SUM () Funktion in der Tabelle Fußzeile hinzuzufügen, die die äußere Umfang beider Gruppen ist und sie alle zusammen summieren. Wenn Sie auf einem Zustand summieren, müssen Sie mitteilen, dass auch dort setzen.

Leider von Ich bin weg meine Berichterstattung Entwicklung Box im Moment, aber es ist entweder:
= (Sum (Fields! Column1 + Summe (Fields! Column2))
OR
= SUMME (sum (Fields! Column1) + Summe (Fields! Column2))

Ich bin mir ziemlich sicher, dass es die erste der 2 ist.

Sie können nicht wirklich, aber man kann es betrügen. Ich blooged eine Lösung für dieses hier: http://dataqueen.unlimitedviz.com/2011/05/ssrs-aggregate-last-ytd-or-last-child-value-in-an-ssas-query/

Sie können einfach wie folgt vorgehen: Sum (CInt (Fields! TestValue.Value))  oder Sum (CInt (Fields! DollarAmountOfCheck.Value), "DataSet1") irgendwann, wenn Daten durch WCF kommen, ist es nicht Sum () Funktion übernehmen. aber das funktioniert gut in diesem Fall.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top