在SSRS中,我有一个从存储过程生成的报告。我有一个名为“Price”的列,报告有各种分组(如下所示)。所以因为有这么多的分组,所以价格总计很多。我需要将这些总计作为平均值滚动到TimeRange的父组中。这样我就可以知道Z产品的平均价格是X.我显然知道这是通过将所有这些总数相加并除以总数来完成的,但我不知道如何在SSRS中完成。是否有可能动态加总所有这些总数?或者可能设置某种全局变量来处理这个问题?
编辑:我描述的问题有点不对劲。似乎主要的问题是价格数据返回所有正“价格”,然后报告使用其他列来定义价格是否为负(如果我们买东西或卖东西)。因为我认为没有办法通过微软代码来弥补这一点。我根据规则将它们组合在一起,并将应该为负的价格乘以-1。我现在想要找出一种方法来获取这些个体总数并将它们组合成一个小计。它可以通过获取总数的总和来实现。只做一个直接求和(价格)没有帮助,因为在报告触及它们之前,它将直接从查询中获取所有值,并且这些值都是正值,这会抛出报告数据。
所以我想这里有三个解决方案:
1.有一些神奇的SSRS代码允许我将从表达式而不是初始数据库值输出的数据加在一起,并动态地进行...
2.在报告中有某种方式来定义和分配全局变量然后我可以使用某种伪代码来添加和减去变量中的数据,然后取总数的平均值
3.目前这是不可能的,我将不得不完全重写源数据的过程或提出另一个不是SSRS的解决方案。
TimeRange
_
| Product
| _
| |
| | Time Unit
| | _
| | |
| | | TransactionType
| | | _
| | | |
| | | | Pay Status
| | | | Price Total Calculated Here [Sum(Price)]
| | | |_
| | |
| | |_
| |
| |_
|
|
|
|_
答案 0 :(得分:1)
Reporting Services使这变得非常简单 - 事实上,如果您只是使用向导(报表生成器中的表向导,Visual Studio / BIDS中的报表向导),并将所有分组字段添加到“组”部分,然后启用小计,将为您完成求和,然后您可以使用表达式来改变字段以划分两个求和字段。
以下是有关分组和聚合的一些更有用信息的链接: http://technet.microsoft.com/en-us/library/ms170712.aspx
答案 1 :(得分:0)
使用Avg
功能获取分组中所有值的平均值:
=Avg(Fields!Price.Value)