Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 如何对子组的聚合求和_Reporting Services_Ssrs 2008 R2_Reportbuilder3.0 - Fatal编程技术网

Reporting services 如何对子组的聚合求和

Reporting services 如何对子组的聚合求和,reporting-services,ssrs-2008-r2,reportbuilder3.0,Reporting Services,Ssrs 2008 R2,Reportbuilder3.0,这应该很容易,但我被卡住了 我有一个表格列出了一些关于资格的数据——为了实现这一点,一个基本上是每个学生一行的数据集被分组在资格上,而一个家长分组在“度量”上(这只是一个资格桶) 其中一列试图计算出每项测量/资格中的学生人数(更准确地说,是学生人数,在特定字段中有一个值,由另一个字段加权)。在下面的屏幕截图中,它是右侧的“Pred.Avg”列 因此,对于鉴定行分组,该列的计算公式为: =CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value)=Fals

这应该很容易,但我被卡住了

我有一个表格列出了一些关于资格的数据——为了实现这一点,一个基本上是每个学生一行的数据集被分组在资格上,而一个家长分组在“度量”上(这只是一个资格桶)

其中一列试图计算出每项测量/资格中的学生人数(更准确地说,是学生人数,在特定字段中有一个值,由另一个字段加权)。在下面的屏幕截图中,它是右侧的“Pred.Avg”列

因此,对于鉴定行分组,该列的计算公式为:

=CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value)=False,Fields!Learner_ID.Value,Nothing),“Qual”)*查找(Fields!Qual_code.Value,Fields!Qual_code.Value,Fields!size.Value,“DS_ks5; LKP”)

这很好-最右侧列中的35和11.5值对于这些行是正确的。最上面一行应该做的是简单地将其他行中的值相加,得到这个度量中的学生人数,在本例中为46.5。为此,我使用的表达式是:

=Sum(CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value)=False,Fields!Learner_ID.Value,Nothing),“Qual”)*查找(Fields!Qual_code.Value,Fields!Qual_code.Value,Fields!size.Value,“DS_ks5; k_LKP”),“Measure”)

但是,正如您在屏幕截图中看到的,返回的是2917

所以我的问题是,;为什么这不起作用,既然它不起作用,我如何在父组中聚合子组中的聚合结果

编辑:

好的,我已经确定以下各项工作正常:

=Sum(CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value)=False,Fields!Learner_ID.Value,Nothing),“Qual”),“Measure”)


问题在于返回11.5的Qual行被加权为0.5。也就是说,它实际上返回23,
查找(Fields!Qual_code.Value,Fields!Qual_code.Value,Fields!size.Value,“DS_ks5; LKP”)
用于返回0.5并将其更改为11.5的那一行,所以问题变成了;如何将
…*查找(Fields!Qual\u code.Value,Fields!Qual\u code.Value,Fields!size.Value,“DS\u ks5nations\u LKP”)
强制进入“Qual”范围,如
CountDistinct()
已经在?

这里的问题是,您试图使用只返回一个值的查找函数来聚合值。有几种方法可以做到这一点。一种方法是使用该函数获得适用的权重。更好的方法是组合数据集中的数据,以便无需使用查找即可使用Lighting。这样,函数就可以重新计算任何分组级别,而无需对其强制作用域。此外,CountDistinct忽略“Nothing”,这样您就可以不使用额外的IIf语句。希望这能帮到您。

是的,您是对的。修改数据集使一切都变得简单…感谢您的建议!