none
SSRS SUM-Funktion RRS feed

  • Frage

  • Sehr geehrte Foren-Mitglieder,

    ich stehe vor einem kleinen Problem. Mir wurde ein Aufgabe übertragen, dass ich einen alten Crystal Bericht in das neue SSRS 2016 übernehmen soll. Soweit alles kein Problem. Ich arbeite mit dem Berichtsgenerator 3.0 für SSRS 2016. Mein derzeitiger Bericht sieht ungefähr so aus:

                                                       Artikel Bezeichnung Menge Volumen

    Gruppe 1 Monat

    Gruppe 2 Woche

    Gruppe 3 Tag

    Gruppe 4 Artikel

    Detail sind ausgeblendet.

    Jetzt muss ich folgende Formel aus dem Crystal Bericht ins SSRS 2016 übernehmen:

    Sum ({@Volumen}, {Datum}, "daily")/(8*37.152)*100

    Wie muss die Formel in SSRS aussehen damit es funktioniert?

    Eigentlich ist das ja nichts anderes wie:

    Sum(Volumen) / (8*37.152)*100

    Aber sobald ich eine Expression mit der Formel erstelle erhalte ich eine Fehlermeldung:

    Der Value-Ausdruck für das Feld-Objekt enthält einen Fehler (BC30198)

    Weiß jemand wie ich mein Problem lösen kann und kann mir helfen?

    Über jegliche Hilfe wäre ich sehr dankbar.

    Vielen Dank.

    Gruß

    dash_

    Montag, 19. Juni 2017 13:49

Antworten

  • Hallo!

    Ich würde im Ausdruck eher etwas in dieser Richtung erwarten:

    =Sum(Fields!Volumen.Value) / (8*37.152)*100
    Leider ist mir nicht klar, wo Du genau diesen Ausdruck einsetzt. Kannst Du das mal genauer beschreiben, bzw. einen Screenshot posten?


    Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu

    Dienstag, 20. Juni 2017 06:31

Alle Antworten

  • 1. rechne den Wert der Konstanten (8*37.152)*100 einfach aus: 29721,6
    2. Packe das in die SUM-Formel, da es mathematisch egal ist, ob du vor oder nach dem Aggregat dividierst.

    SUM(Volumen / 29721,6)

    Alternativ geht vielleicht auch

    SUM(Volumne) / AVG(29721,6)

    Montag, 19. Juni 2017 13:59
  • Hallo,

    danke für deinen Tipp. Daran hab ich noch gar nicht gedacht.

    Werde ich später mal testen, ob das funktioniert!

    Montag, 19. Juni 2017 14:49
  • Leider hat dein Vorschlag bei mir nichts gebracht.

    Bekomme dann die Fehlermeldung:

    Der Ausdruck für das berechnete Feld "AbweichungT" enthält eine Aggregat-, RowNumber-, RunningValue- Previous oder Suchfunktion.... 

    Warum auch immer..

    Über weitere hilfreiche Tipps wäre ich sehr dankbar!

    Gruß

    dash_

    Dienstag, 20. Juni 2017 05:21
  • Hallo Zusammen,

    hierzu eine erste kleine Anmerkung. Die beiden folgenden Berechnungen sind nicht identisch:

    Select 100000.0 /  (8*37.152)*100;
    Select 100000.0 /  ((8*37.152)*100);
    Daher kann die Lösung oben "rechne den Wert der Konstanten (8*37.152)*100 einfach aus: 29721,6" auch nicht korrekt sein.


    Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu

    Dienstag, 20. Juni 2017 06:21
  • Da du dich im Berichtsgenerator befindest, ist die Auswahl der Funktionen scheinbar eingeschränkt:
    https://docs.microsoft.com/de-de/sql/reporting-services/report-design/report-builder-functions-sum-function

    Also kannst du wohl nur "SUM(<Ausdruck>)" verwenden, was höchstens gleichbedeutend mit "SUM(Volumen / 29721,6)" wäre.
    Manchmal hilft dann nur eine Umgehungslösung mit Zwischenergebnissen.
    In der Datenquelle (oder SQL-Abfrage?) ein berechnetes Feld "CalcVolumen" hinzufügen "Volumen / 29721,6" und dann dieses im Bericht aggregieren.

    Dienstag, 20. Juni 2017 06:26
  • Hallo!

    Ich würde im Ausdruck eher etwas in dieser Richtung erwarten:

    =Sum(Fields!Volumen.Value) / (8*37.152)*100
    Leider ist mir nicht klar, wo Du genau diesen Ausdruck einsetzt. Kannst Du das mal genauer beschreiben, bzw. einen Screenshot posten?


    Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu

    Dienstag, 20. Juni 2017 06:31
  • Hallo Leute,

    vielen Dank für die schnellen Rückmeldungen.

    Also mein Problem war einfach das ich aus Gewohnheit ein KOMMA anstatt wie es richtig ist ein PUNKT genommen habe... Dabei dachte ich immer es liegt an was anderem.

    Also folgende Rechnung bringt mich auf richtiges Ergebnis:

    =Sum(Fields!Volumen.Value) / (8 * 37.152) * 100

    Jetzt stehe ich aber schon vor dem nächsten Problem.

    In Crystal Reports habe ich die gleiche Formel für die Gruppe Woche, jedoch mit einem DISTINCTCOUNT

    Sum ({@Volumen}, {Woche}, "weekly")/(DistinctCount ({Tag}, {Woche}, "weekly")*8*37.152)*100

    Ist im Berichtsgenerator der Befehl CountDistinct dasselbe?

    Bekomme falsche Werte.

    Gruß

    dash_

    Dienstag, 20. Juni 2017 06:59
  • Dann poste doch mal, was Du im SSRS codiert hast.

    Idealerweise stellst Du noch ein paar Testdaten bereit und das gewünschte Ergebnis.


    Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu

    Dienstag, 20. Juni 2017 07:43