我有ssrs report
。有一个矩阵,有2个行组(从外到内):group - item和1列组:year。我希望它很容易理解。请参阅下面的“图片”。
Group CAGR 2010 2011
Group1 CAGR_group1 sum_group1_2010 sum_group1_2011
Item1 CAGR_item1 sum_item1_2010 sum_item1_2011
Item2 CAGR_item2 sum_item2_2010 sum_item2_2011
sum_group1_2010
和sum_group1_2011
是每年的item1和item2的总和。
CAGR_item1
和CAGR_item2
由这个fomular计算:
CAGR = (sum_item2_2011/sum_item2_2010)^(1/n) - 1 (n=2011-2010)
我在代码中创建了这个函数。计算每个项目的CAGR很简单。我使用了以下表达式:note首先参考2010年,在这种情况下最后参考2011年。
Code.CAGR(First(Fields!Amount.Value).ToString, Last(Fields!Amount.Value).ToString, Last(Fields!year.Value).ToString - First(Fields!year.Value).ToString)
现在的问题是如何计算CAGR_group1?我打算用
Code.CAGR(First(Sum(Fields!Amount.Value)).ToString, Last(Sum(Fields!Amount.Value)).ToString, Last(Fields!year.Value).ToString - First(Fields!year.Value).ToString).
然后SSRS报告不能在另一个聚合函数中使用聚合函数。
希望一切都清楚。感谢。
答案 0 :(得分:0)
我认为最简单的方法是将计算添加到SQL查询中:它可能是现有查询中的新列,它会为每个记录(行)计算相同的值。然后在您的报告中使用FIRST函数。
或者,如果您向聚合函数添加适当的范围语句,例如FIRST(SUM(Fields!Amount.Value,“ItemGroupName”),“Group1GroupName”)
,这可能会有效。