我想计算同一数据集中两个字段的标准偏差。
例如:
MyFields1 = 10,10
MyFields2 = 20
我现在想要的是(10,10,20)的标准偏差,预期结果是4.7
在SSRS中,我想有这样的事情:
= StDevP(Fields!MyField1.Value + Fields!MyField2.Value)
不幸的是,这是不可能的,因为(Fields!MyField1.Value + Fields!MyField2.Value)返回单个值而不是值列表。有没有办法将同一数据集中的两个字段组合成某种临时数据集?
我唯一的解决方案是:
创建包含两个字段中所有值的新数据集。但这非常烦人,因为我需要大约20个,我有6个报告参数需要过滤每个查询。 =>维护可能会非常缓慢和烦人。
手工编写公式。但我真的不知道怎么回事。 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
顺便说一下。我知道做出这样的计算很奇怪,但这是我的客户想要的,我必须以某种方式提供。
感谢您的帮助。
答案 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")