2016-07-11 28 views
1

In meinem SSRS-Bericht habe ich zwei Tabellen: Verluste (Tabelle2) und verdiente Prämien (Tabelle 1), die beide aus verschiedenen Datensätzen stammen. Ich muss die Quoten basierend auf diesen Verlusten und verdienten Prämien für jeden Monat und jedes Jahr berechnen. Dafür verwendete ich LOOKUP Funktion und es funktioniert gut:Wie man SUM zusammen mit der Funktion LOOKUP verwendet

SUM(Fields!PaidLosses.Value)/Lookup(Fields!AccidentYearNum.Value & Fields!AccidentMonthNum.Value, Fields!YearStartRisk.Value & Fields!MonthStartRisk.Value, Fields!EarnedPremium.Value, "EarnedAllCoverages") 

enter image description here

Aber jetzt brauche ich TOTALS zu berechnen. Welches sind die Gesamtverluste für jeden Monat und jedes Jahr, geteilt durch die verdiente Gesamtprämie für jeden Monat und jedes Jahr. zu diesem Artikel Basierend

http://www.sqlservercentral.com/blogs/salvoz-sql/2013/05/27/sum-result-of-ssrs-lookupset-function/

ich diesen Custome-Code inserteded:

Function SumLookup(ByVal items As Object()) As Decimal 
If items Is Nothing Then 
Return Nothing 
End If 
Dim suma As Decimal = New Decimal() 
Dim ct as Integer = New Integer() 
suma = 0 
ct = 0 
For Each item As Object In items 
suma += Convert.ToDecimal(item) 
ct += 1 
Next 
If (ct = 0) Then return 0 else return suma 
End Function 

Und jetzt habe ich diesen Ausdruck verwenden:

=SUM(Fields!PaidLosses.Value)/Code.SumLookup(LookupSet(Fields!AccidentYearNum.Value & Fields!AccidentMonthNum.Value, Fields!YearStartRisk.Value & Fields!MonthStartRisk.Value, Fields!EarnedPremium.Value, "EarnedAllCoverages")) 

Aber das tut mir richtige Antwort für irgendein Grund. enter image description here Was fehlt mir hier?

+0

Der Ausdruck muss möglicherweise zu diesem ändern: '= SUMME (Felder! PaidLosses.Value)/Code.SumLookup (LookupSet (Felder! AccidentYearNum.Value, Felder! YearStartRisk.Value, Fields! EarnedPremium.Value," EarnedAllCoverages "))) ' –

+0

OMG !!! Du hast gerade meinen Tag gemacht !!!! Vielen Dank!!! Du hast recht, Monate sind nicht mehr in einer Gruppe. Ich fühle mich jetzt so dumm :) – Oleg

+0

Froh, dass es funktioniert hat! –

Antwort

1

Antwort: Der Ausdruck für die Summe in der 3. Matrix muss angepasst werden.

=SUM(Fields!PaidLosses.Value)/Code.SumLookup(LookupSet(Fields!AccidentYearNum.Value, Fields!YearStartRisk.Value, Fields!EarnedPremium.Value, "EarnedAllCoverages")) 

Die Summe läuft bis zum Jahr, so dass die Monate nicht mehr benötigt werden.