2013-07-07 2 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% 

총 IRR와 총 기부 항상 그 기여의 합을 곱한 각 행 ACB입니다 동일한

주입니다 ACB의 다음 각 행의 IRR을 곱한.

다음 보고서가 있습니다. 내 문제는 중첩 된 집계로 인해 부분 할당 및 합계 작업을 수행 할 수 없다는 것입니다. 정확한 데이터 범위를 어떻게 목표로 할 지 잘 모르겠습니다. report

IRR와 IRR 소계 표현

=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 (잘못된 번호와 함께 제공) 작동하도록 공헌 계산을 얻기 위해 노력하는 (일)

,363,210 소계 및 기여의 총을 얻기 위해 노력

나는이 오류를 얻을

=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 표현식의 범위는 그룹 수준입니다. 당신은에서부터 점에 유의합니다

enter image description here

:이 두 표현은 예상 결과를 제공하는 것 나에게

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

: 서브 총

나는 표현을 사용 그룹 레벨 표현 Sum(Fields!ACB.Value)Sum(Fields!ACB.Value, "Classification")과 동일합니다. 실제로 이것은 Sum(Fields!TotalGain.Value)/Sum(Fields!ACB.Value)으로 단순화 될 수 있습니다. 즉, 우리가 기대하는 IRR입니다. 당신이 의 총 공헌을 해결해야하는 경우

모든분류, 즉 그랜드 총, 당신은 위의 표현에 "Performance""Classification"을 변경해야 할 것입니다.

희망하는 결과를 얻을 수 있기를 바랍니다. 당신의 대답은 옳은 길에 저를 설정하고 총 저를 얻는 데 매우 가깝게

+0

당신을 감사합니다 RDL입니다. 나는 아래에 답장을 올렸다. –

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을 첨부했습니다. 나는 당신의 노력에 크게 감사드립니다.

여기

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

+1

멋진 소식, 업데이트 주셔서 감사합니다. 도움이 되셨습니다.승수에 대해 잘 모르겠습니다. 실제로는 기본 데이터와 보고서 그룹의 조합에 따라 달라집니다. 더 이상 문제를 해결하려면 모든 중간 계산 (예 :'Sum (Fields! ACB.Value, "Performance")')을 표시하는 디버그 열을 추가하고 이들 중 하나 이상이 올바르지 않거나 따라서 전체 값에 영향을 미치고 그에 따라 업데이트됩니다. –