Reporting Services - ausgewählte Spalten in einer Matrix summieren

Kay0815

Neuer Benutzer
Beiträge
3
Hallo,

ich bin ganz neu hier, arbeite aber schon einige Jahre mehr oder weniger erfolgreich mit Reporting Services. Ich habe das Forum schon durchsucht, aber leider noch keinen passenden Beitrag gefunden.

Ich versuche in einer Matrix bestimmte Spalten zu summieren. Die Matrix hat z.B. folgende Werte:
Datum, Lager 1, Lager 2, Lager 3, Summe
01.04.2025, 1000, 2000, 2500, 5500
02.04.2025, 1400, 1800, 2200, 5400
Summe, 2400, 3800, 2700, 10900
...

Nun möchte ich eine weitere Spalte einfügen, die nur die Summe für Lager 1 und Lager 2 enthält. Ich hab schon mit
=IIf((Fields!Location_Code2.Value = "Lager 1" OR Fields!Location_Code2.Value = "Lager 2"), Sum(Fields!Amount.Value), 0)
versucht, aber da kommt nicht der Teilbetrag, sondern die ganze Summe der Zeile.
In der letzten Zeile soll dann auch wie bei den anderen Spalten eine Summe gebildet werden.

Ich hoffe ihr habt eine Idee.

Vielen Dank.
 
Werbung:
Die "weitere Spalte" soll im Ergebnis der Abfrage stehen oder es soll tatsächlich eine weitere Spalte in der Tabelle geben? Letzteres ist nicht zu empfehlen. Ich gehe mal davon aus, das deine Spalte Summe und deine Zeile Summe beide erst in der Abfrage entstehen.

Mit Reporting Services bin ich nicht vertraut aber dein Code lässt mich vermuten, das die Daten in EAV vorliegen?
Also in einer Tabelle gibt es Einträge mit Location Code, der jeweils Lager N ist, und einen Wert. Oder bin ich da auf dem Holzweg, keine Ahnung^^

In reinem SQL würde ich vermutlich erst alle Tagessummen für Lager 1 abfragen und dann mit den Tagessummen für Lager 2 joinen.
 
Ich würde diese Summe von Lager1 und Lager2 wahrscheinlich bilden, bevor ich eine Matrix daraus mache. Und- ich kenne diese Services nicht- wer A sagt muss auch B sagen, die Gesamtsumme wahrscheinlich ebenfalls, da man sonst an dieser Stelle vielleicht ein ähnliches Problem hat..
Die Matrix entsteht dann ohne Summierung, nur zusammenfassung der Werte eines Tages, jeweils pro Lager, Teilsumme, Gesamsumme.
 
Danke für eure Hinweise. Dann muss ich das wohl alles schon in der Abfrage erstellen. Ich hatte gehofft, dass das Reporting das hinbekommt, da man ja offensichtlich Summen bilden kann. Ich hatte nur die einzelnen Werte für Lager und Tage im SQL-Ergebnis. Die Summen der Zeilen und Spalten hat dann die Matrix erstellt.

@ukulele
Du hast Recht, die Daten liegen so vor. Es sind sogar mehrere 1000 Zeilen im Ergebnis, die dann nur zusammengefasst werden. Ich versuche das mal noch weiter zu optimieren.

@dabadepdu
Ich denke auch, dass ich die Spalte der Gesamtsumme weglassen und im SQL errechnen muss, da sonst die Einzelwerte und meine Summe für Lager 1+2 in die Gesamtsumme einfließen würden.

Trotzdem Danke :)
 
Also in SQL wäre das in etwa so:
Code:
SELECT    *
FROM    (

SELECT    [Datum],
        sum([Amount]) AS Amount
FROM    tabelle
WHERE    [Value] = 'Lager 1'
GROUP BY [Datum]

    ) t1
FULL OUTER JOIN (

SELECT    [Datum],
        sum([Amount]) AS Amount
FROM    tabelle
WHERE    [Value] = 'Lager 2'
GROUP BY [Datum]

    ) t2
ON        t1.Datum = t2.Datum
 
@ukulele
Danke für deine Vorlage. Ich habe versucht diese auf meinen SQL zu übertragen. Aber ich bekomme es noch nicht hin, da der erste Unterselect bei mir aus 2 Tabellen besteht. Da muss ich noch mal tüfteln.

Ich habe aber eine Lösung für das Reporting gefunden. In der Spalte bzw. das Feld für die Teilsumme muss der Ausdruck
Code:
=sum(VAL(IIF( (Fields!Location_Code2.Value = "Lager 1" OR Fields!Location_Code2.Value = "Lager 2"), Fields!Amount.Value, 0)))
lauten, dann klappts auch mit den Teilsummen. Ich lass nun alle Summen im Reporting berechnen und nicht im SQL.
 
Werbung:
Leider habe ich von Reporting Services keinen Plan :-)

Achte darauf, das in Fällen wo es nur Lager 1 oder nur Lager 2 gibt, auch korrekte Ergebnisse raus kommen.
 


Schreibe deine Antwort....
Zurück
Oben