SSRS 2008:从多个领域使用StDevP /一般组合多个领域

时间:2013-02-07 14:53:40

标签: expression ssrs-2008-r2

我想计算同一数据集中两个字段的标准偏差。

例如:
MyFields1 = 10,10 MyFields2 = 20

我现在想要的是(10,10,20)的标准偏差,预期结果是4.7

在SSRS中,我想有这样的事情:
= StDevP(Fields!MyField1.Value + Fields!MyField2.Value)

不幸的是,这是不可能的,因为(Fields!MyField1.Value + Fields!MyField2.Value)返回单个值而不是值列表。有没有办法将同一数据集中的两个字段组合成某种临时数据集?

我唯一的解决方案是:

  1. 创建包含两个字段中所有值的新数据集。但这非常烦人,因为我需要大约20个,我有6个报告参数需要过滤每个查询。 =>维护可能会非常缓慢和烦人。

  2. 手工编写公式。但我真的不知道怎么回事。 StDevP对我来说并不是那么重要。这就是我用Avg做的,数学上更简单:
    =(SUM(Fields!MyField1.Value)+ SUM(Fields!MyField2.Value))/ 2
    在这里找到:http://social.msdn.microsoft.com/Forums/is/sqlreportingservices/thread/7ff43716-2529-4240-a84d-42ada929020e

  3. 顺便说一下。我知道做出这样的计算很奇怪,但这是我的客户想要的,我必须以某种方式提供。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

CTDevP是标准偏差。 这样的表达对我来说很好 =StDevP(Fields!MyField1.Value + Fields!MyField2.Value)但它偏离了一个值(Fields!MyField1.Value + Fields!MyField2.Value),它始终为0. 您可以在这里查看公式: standard deviation (wiki)

我认为您需要为某个组(或完整数据集)计算此值,为此您需要在CTDevP中设置您的范围:

=StDevP(Fields!MyField1.Value + Fields!MyField2.Value, "MyDataSet1")