2013-07-07 152 views
1
SQL Server 2012 
Visual Studio 2010 
Dataset being used is called Performance 
Formulas 
ACB = Average Capital Base 
IRR = Internal Rate of return = Total Gain/ACB 
Contribution = ACB/Sum(ACB)*IRR 

我正在計算投資貢獻。 這是一個計算示例。SSRS小計和總計的嵌套總計錯誤

Account Total Gain ACB  IRR  Contribution 
ABC  2,000.00 20,000 10%  6.67% 
DEF  2,000.00 10,000 20%  6.67% 
total 4,000.00 30,000 13.33%  13.33% 

總內部收益率和總貢獻始終是相等的

注意的貢獻是各行ACB乘以總和ACB的然後通過各行IRR相乘。

我有以下報告。我的問題是我無法獲得小計和總計工作,因爲嵌套聚合。我也不確定如何定位正確的數據範圍。 report

內部收益率和內部收益率小計表達式(工作)

=Fields!TotalGain.Value/Fields!ACB.Value 
=Sum(Fields!TotalGain.Value)/Sum(Fields!ACB.Value) 

report

試圖讓貢獻計算工作(出現數錯誤)

=Fields!ACB.Value/Sum(Fields!ACB.Value, "Performance")*Fields!IRR.Value 

report

試圖讓小計和總的貢獻(儘管數量是錯誤的)

=sum(Fields!ACB.Value/Sum(Fields!ACB.Value, "Performance")*Fields!IRR.Value) 

report

我得到這個錯誤 report

Error 3 [rsInvalidNestedDataSetAggregate] The Value expression for the text box ‘Textbox29’ has a nested aggregate that specifies a dataset scope. Inner aggregates cannot specify a dataset scope. F:\Automater\SSRS\Reports_2012\PerformanceSample2.rdl 0 0 

我認識錯誤的是與試圖總結已經總結的價值有關,但這正是計算所要求的。

回答

1

根據您的描述,看起來好像您正在努力貢獻分類級別,例如, 股票,固定收益

因此,制定總ACB查看詳細行,當你需要總在特定分類範圍鍛鍊。

考慮一些簡化數據:

enter image description here

我稱此數據集性能,並已構建了基於它的報告:

enter image description here

對於行級貢獻我用表達式:

=Fields!ACB.Value/Sum(Fields!ACB.Value, "Classification") 
    * (Fields!TotalGain.Value/Fields!ACB.Value) 

這裏SUM表達式的範圍是組級別。

對於子總用我的表達:

=Sum(Fields!ACB.Value)/Sum(Fields!ACB.Value, "Classification") 
    * (Sum(Fields!TotalGain.Value)/Sum(Fields!ACB.Value)) 

對我來說,這兩個詞語似乎給了預期的結果:

enter image description here

你會注意到,因爲在組水平表達Sum(Fields!ACB.Value)相當於Sum(Fields!ACB.Value, "Classification"),這實際上可以簡化爲Sum(Fields!TotalGain.Value)/Sum(Fields!ACB.Value),即IRR,這也是我們所期望的。

如果需要貢獻制定出總的所有分類,即總計,你必須在上面的表述改變"Classification""Performance"

希望這可以幫助您獲得理想的結果。

+0

謝謝。我已在下面發佈回覆。 –

0

伊恩·普雷斯頓,

你的回答讓我在正確的道路上,並非常接近讓我總。解。因此我將其標記爲正確。不過,我想添加一些額外的反饋。你是正確的,我需要指定由行級範圍行可切換爲不同的分類級別和被稱爲ClassificationMemberName

這裏是貢獻

=Fields!ACB.Value/Sum(Fields!ACB.Value, "ClassificationMemberName") 
* (Fields!TotalGain.Value/ fields!ACB.Value) 

出於某種原因,我行級公式對於小計,我需要乘以2的值才能得到正確的結果?但是,這僅適用於資產級別的分類。如果我按總投資組合分類,價值翻倍。

=sum(Fields!ACB.Value, "ClassificationMemberName")/ 
Sum(Fields!ACB.Value, "Performance") 
* 
sum(Fields!TotalGain.Value, "ClassificationMemberName")/ 
sum(fields!ACB.Value, "ClassificationMemberName")*2 

如果您想了解我的意思,我附上rdl。我非常感謝你的努力。

這裏是RDL

https://dl.dropboxusercontent.com/u/29851290/PerformanceSample2.rdl

+1

很酷,感謝您的更新 - 很高興看到它的幫助!不確定乘數;它確實取決於基礎數據和報告分組的組合。所有我可以建議,如果你想進一步排除故障是添加調試列,顯示所有的臨時計算,即'Sum(Fields!ACB.Value,「Performance」)'並嘗試看看是否有一個或多個看起來不正確,因此影響整體價值,然後相應更新。 –