Frage SSRS bedingte Summierung


Ich habe einen SSRS-Bericht, der mehrere Seiten mit Zeilen anzeigt. In jeder Zeile ist ein "TYPE" -Feld. In diesem TYPE-Feld gibt es entweder ein "M" für den Wert oder ein "P" für den Wert. Am Ende des Berichts möchte ich alle Preiswerte für die "P" TYPES zusammenfassen. Ich habe es versucht, aber es hat einen #Fehler ausgelöst:

=Sum(iif(Fields!TYPE.Value = "P",Fields!EXT_QTY.Value * Fields!PRICE.Value ,0))

Dies summierte alle Zeilen

=iif(Fields!PART_TYPE.Value = "P" ,  Sum(Fields!EXT_QTY.Value * Fields!PRICE.Value ),  0 )

Ich bin sicher, das ist machbar. Irgendwelche Ideen? Vielen Dank


22
2018-01-18 17:32


Ursprung


Antworten:


Die Antwort gefunden ....

=SUM(IIF(Fields!PART_TYPE.Value ="P",CDbl(Fields!EXT_QTY.Value * Fields!PRICE.Value), CDbl(0.0)))

33
2018-01-18 19:12



Das SUM fehlschlägt aufgrund des Typenvergleichs - Sie können keine Werte verschiedener Typen zusammenfassen, da es sich um den Ausdruck handelt (wahrscheinlich a Double) mit 0, an Integer. Die Antwort von MikeTWebb führt eine explizite Typumwandlung durch, um diesen Fehler zu umgehen. Dies ist für dieses spezielle Beispiel in Ordnung, da es eine Summe ist, jedoch liefert dies kein genaues Ergebnis, wenn Sie einen Durchschnittswert (dh Sum / Count) der Werte, bei denen der Typ P ist. Das liegt daran, dass 0 ein Wert ist und in die Durchschnittsberechnung einbezogen wird, wenn diese Werte tatsächlich von der Berechnung ausgeschlossen werden sollen.

Eine andere Option ist zu verwenden Nothing statt 0:

=Sum(IIF(Fields!TYPE.Value = "P", Fields!EXT_QTY.Value * Fields!PRICE.Value, Nothing))

Dies löst den Typvergleichsfehler, ohne dass eine explizite Typumwandlung erforderlich ist, und ist eine bessere Lösung, wenn Sie Aggregationen verwenden, bei denen es für das Ergebnis von Bedeutung ist, ob der Wert vorhanden ist oder nicht Average.


12
2018-03-13 01:28