【发布时间】:2016-02-10 13:42:48
【问题描述】:
这应该很容易,但我卡住了。
我有一个表格列出了一些关于资格的数据 - 为了实现这个数据集本质上是每个学生一行的数据集在资格上分组,而父分组在“衡量”上(这只是一个一桶资格)。
其中一列试图计算出每个度量/资格中的学生人数(嗯,更准确地说是在特定领域具有值的学生人数,由另一个领域加权) .在下面的屏幕截图中,它是右侧的“Pred. Avg”列。
因此,对于 Qualification Row Grouping,该列的计算方式为:
=CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value) = False, Fields!Learner_ID.Value, Nothing), "Qual") * Lookup(Fields!Qual_Code.Value, Fields!Qual_Code.Value, Fields!size.Value, "DS_KS5Nationals_LKP")
这很好用 - 最右边一列中的 35 和 11.5 的值对于这些行是正确的。最上面一行应该做的只是简单地将其他行中的值相加,得到这个度量中的学生人数,在这种情况下给出 46.5。为此,我使用的表达式是:
=Sum(CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value) = False, Fields!Learner_ID.Value, Nothing), "Qual") * Lookup(Fields!Qual_Code.Value, Fields!Qual_Code.Value, Fields!size.Value, "DS_KS5Nationals_LKP"), "Measure")
但是,正如您在屏幕截图中看到的那样,这将返回 2917。
所以我的问题是;为什么这不起作用,并且鉴于它不起作用,我如何在父组中聚合子组内的聚合结果?
编辑:
好的,我已经确定以下工作正常:
=Sum(CountDistinct(Iif(IsNothing(Fields!AVG_PTS.Value) = False, Fields!Learner_ID.Value, Nothing), "Qual"), "Measure")
问题在于返回 11.5 的 Qual 行的权重为 0.5。 IE。它实际上返回 23,而 Lookup(Fields!Qual_Code.Value, Fields!Qual_Code.Value, Fields!size.Value, "DS_KS5Nationals_LKP") 是用于返回 0.5 并将其更改为 11.5 的那一行......所以问题变成了; “我如何强制 ...*Lookup(Fields!Qual_Code.Value, Fields!Qual_Code.Value, Fields!size.Value, "DS_KS5Nationals_LKP") 进入“Qual”范围,就像 CountDistinct() 已经在里面一样?
【问题讨论】:
标签: reporting-services ssrs-2008-r2 reportbuilder3.0