2009-03-11 7 views
3

Dies scheint wie es sollte einfach sein, aber ich kann noch nichts finden. In Reporting Services habe ich eine Tabelle mit bis zu 6 Zeilen, die alle berechnete Werte und dynamische Sichtbarkeit haben. Ich möchte diese Zeilen zusammenfassen. Grundsätzlich habe ich eine Reihe von Rechnungspositionen und möchte eine Summe bilden. Ich kann nichts auf der DB-Seite ändern, da meine gespeicherten Prozeduren an anderer Stelle im System verwendet werden. Jede Zeile zieht auch Daten aus einem anderen Datensatz, sodass ich keine Summe des Datensatzes erstellen kann. Kann ich alle Zeilen mit einem Tabellenfuß zusammenfassen? Ähnlich wie das Summieren einer Anzahl von Zeilen in Excel? Es scheint sehr überflüssig zu sein, meinen Sichtbarkeitsausdruck von jeder Reihe in meine Fußzeile zu setzen, um die Summe zu berechnen.Erstellen Sie Summe der berechneten Zeilen in Microsoft Reporting Services

Antwort

13

Ein paar Möglichkeiten, wie Sie könnte dies erreichen:

1. die Berechnung in der SQL tun, und das Feld Summe, etwa so:

SELECT Quantity, Amount, Quantity * Amount As TotalAmount FROM MyTable 

Dann benutzen Sie einfach die TotalAmount Feld in Ihrem Details reihe und summiere es in der Fußzeile.

2. Erstellen Sie einen zweiten Datensatz, der die Gesamt für Sie und verwenden, die in der Fußzeile statt einer Summe berechnet:

=Sum(Fields!TotalAmount.Value, "MyTotalingDataset") 

3. es benutzerdefinierten Code verwenden Sie. Klicken Sie mit der rechten Maustaste auf den Layoutbereich, wählen Sie Eigenschaften und klicken Sie auf die Registerkarte Code. Setzen Sie in dem folgenden Code:

Public Dim TotalAmount As Double = 0 

Public Function CalculateRowTotal(ThisValue As Double, ThatValue As Double) As Double 
    TotalAmount = TotalAmount + (ThisValue * ThatValue) 
    Return ThisValue * ThatValue 
End Function 

Auf dem Band Detail, die Spalte, wo Sie das Feld Summe haben diesen Ausdruck:

=Code.CalculateRowTotal(Fields!Quantity.Value, Fields!Amount.Value) 

Dies wird den obigen Code ausführen und Ihre Berechnung tun plus die Berechnung Gesamtsumme im Prozess.

Das Footer Band zeigt die Gesamtsumme so die Spalte den Ausdruck hat:

=Code.TotalAmount 

Und du bist fertig. Seien Sie vorsichtig, weil Sie nicht sicher sind, in welcher Reihenfolge Ihr Code ausgeführt wird, und bei einigen Berichten führt er zuerst die Fußzeile aus (z. B. wenn Sie die Summe der Zeilen im Detail-Bereich verwenden), was die gesamte Null ergeben würde Da die Detailbandberechnungen noch nicht durchgeführt wurden, sollte dies für den allgemeinen Fall funktionieren.

+0

Vielen Dank für die Information, dass mir keine Order für die Ausführung von Code garantiert wird, was mehr Sinn macht, warum es komplizierter ist, Zeilen zu summieren. – kd7iwp

3

Sie könnten die db wie folgt ändern.

Wussten Sie, dass Sie aggregierte Ergebnisse in SQL ohne sammeln können?

einfach eine zusätzliche Spalte zu dem Datensatz hinzufügen wie folgt: , SUM (OrderQty) OVER (PARTITION BY SalesOrderID) AS 'Total'

In dem obigen Beispiel: OrderQty ist der Wert, den Sie wünschen zusammenzufassen SalerOrderID ist das Äquivalent von 'GROUP BY'

Sie die gleiche Technik mit COUNT, AVG verwenden können, und so weiter

Weitere Informationen hier http://msdn.microsoft.com/en-us/library/ms189461(SQL.90).aspx

-2

Falls Sie ein Problem mit der Ausführungsreihenfolge haben, fügen Sie ein Textfeld unterhalb der Tabelle hinzu und zeigen TotalAmount in diesem Feld an.

+1

Könnten Sie ein wenig genauer sein. -1 für absolute Unschärfe – cjds