Reporting services 如何对子组的聚合求和
这应该很容易,但我被卡住了 我有一个表格列出了一些关于资格的数据——为了实现这一点,一个基本上是每个学生一行的数据集被分组在资格上,而一个家长分组在“度量”上(这只是一个资格桶) 其中一列试图计算出每项测量/资格中的学生人数(更准确地说,是学生人数,在特定字段中有一个值,由另一个字段加权)。在下面的屏幕截图中,它是右侧的“Pred.Avg”列 因此,对于鉴定行分组,该列的计算公式为: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
=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语句。希望这能帮到您。是的,您是对的。修改数据集使一切都变得简单…感谢您的建议!