2017-07-27 10 views
1

Ich habe die folgende Berechnung, die pro jeder Row-Gruppe in SSRS ausgeführt wird:Berechnung, ohne leere Werte

=(count(Fields!RowNumber.Value)*sum(Fields!RowNumber.Value*Fields!Score.Value) - sum(Fields!RowNumber.Value)* sum(Fields!Score.Value))/(count(Fields!RowNumber.Value)*sum(Fields!RowNumber.Value*Fields!RowNumber.Value) - sum(Fields!RowNumber.Value)* sum(Fields!RowNumber.Value)) 

Die Berechnung funktioniert das Slope Ergebnis anzuzeigen.

Das Problem ist, dass einige der Fields! Score.Values ​​in den Zeilengruppen leer sind, also sollte es nicht in die Berechnung einbezogen werden. RowNumber ist ein Feld, das für jede Anzahl von Scores innerhalb dieser Zeilengruppe um 1 erhöht wird.

Wie konnte ich das bei dieser Berechnung berücksichtigen, um leere Werte in Felder! Score.Value aus der Berechnung auszuschließen?

Als Beispiel:

How it seems to be working  How it should work: 
1 0 (converting it to 0)  1 (not take into account this row) 
2 0 (converting it to 0)  2 (not take into account this row)  
3 4       3 4 
4 4       4 4 
5 4       5 4 
6 4       6 4 

Sie können unten, dass der Ausdruck oben wandelt Rohlinge auf 0 und beendet sich mit einem falschen Ergebnis von 0,914286 wo-wie das korrekte Ergebnis 0 ist sehen, wenn es nicht übernimmt diese leeren Einträge berücksichtigen. Unten finden Sie einige andere Beispiele.

Dies verwendet die SLOPE-Funktionalität in Excel (= SLOPE (F5: F10, E5: E10)), die in SSRS mit dem obigen Ausdruck neu erstellt wird. Excel ist scheinbar schlau genug, um die leeren Einträge in der Serie zu ignorieren, und ich brauche die gleiche Funktionalität in SSRS-Ausdruck.

enter image description here

+0

Es mit ungleichen Zahlen auf Reihen 3-6 und dem erwarteten Ergebnis – niktrs

+0

Sicher, wäre schön, ein oder zwei Proben von y zu liefern aussehen sollte done @niktrs – Philip

Antwort

1

Ihr Ausdruck wie unten

=(
SUM(Iif(Fields!num1.Value=0,0,1)) 
* SUM(Fields!rownum.Value*Fields!num1.Value) 
- 
SUM(Iif(Fields!num1.Value=0,0,Fields!rownum.Value)) 
* SUM(Fields!num1.Value) 
) 
/
(
SUM(Iif(Fields!Score.Value=0,0,1)) 
* 
SUM(Iif(Fields!Score.Value=0,0,Fields!RowNumber.Value*Fields!RowNumber.Value)) 
- 
SUM(Iif(Fields!Score.Value=0,0,Fields!RowNumber.Value)) 
* 
SUM(Iif(Fields!Score.Value=0,0,Fields!RowNumber.Value)) 
) 
+0

Danke dafür, aber es gibt auch SUM-Feldeinträge für den RowNumber-Wert, und ich glaube auch, dass das für die Slope-Berechnung benötigt wird, nicht wahr? Könnten Sie bitte bestätigen, und würden Sie den Ausdruck bearbeiten? – Philip

+0

Ihre Berechnung ist ein bisschen komplex. Bitte verbessern Sie Ihre Probendaten mit den aktuellen und den errechneten Ergebnissen der Berechnung. – niktrs

+0

Habe gerade das getan, danke. – Philip