我有一个数据集,它以下列格式返回数据;
等
如何计算startdate,enddate和resource only(不是wbs)的出现次数,并在每一行显示该计数 - 这样我就可以使用计数来计算每周wbs的分配。 / p>
e.g。在上面的例子中,输出应该是;
等
预先感谢您提供任何帮助 - 如果我还不清楚,请告诉我。
旁注 - 我已经尝试添加行组,并且可以获得正确的计数 - 但是这并没有将计数放在每一行上,而是执行以下操作(不确定那个是多么明确);
等
编辑: @Hannover Fist提出的解决方案似乎有效,但我从查找集中得到了一些意想不到的行为。
最后一行被倒数第二行覆盖。 当lookupset设置为Fields!StartDate.Value& " |" &安培; Fields!EndDate.Value,所有列都显示正确的值(分配除外)。 但如果我加入& " |" &安培;字段Resource.Value;!
我倒数第二行。 即。
虽然我的数据集实际上有2行;
yyyy-mm-01 | yyyy-mm-07 | John Doe ABCD yyyy-mm-01 | yyyy-mm-07 | John Doe EFGH非常感谢任何帮助。我其实不知道它发生了什么.. 起初我认为它可能是一个转换错误或者其他东西 - 但是当显示开始和结束日期时,它似乎没有重复行(因为它们需要转换为字符串) &" |")。 即便如此 - 我尝试将开始日期和结束日期放在CSTR()中。 但仍在重复。
答案 0 :(得分:1)
我会使用 SumLookup 函数来获取每个组的总计,并将您的计数除以总计。
分配表达式:
=COUTROWS() / Code.SumLookup(LookupSet(
Fields!StartDate.Value & "|" & Fields!EndDate.Value & "|" & Fields!Resource.Value,
Fields!StartDate.Value & "|" & Fields!EndDate.Value & "|" & Fields!Resource.Value,
1, "Dataset1"))
代码:
Function SumLookup(ByVal items As Object()) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim suma As Decimal = New Decimal()
Dim ct as Integer = New Integer()
suma = 0
ct = 0
For Each item As Object In items
suma += Convert.ToDecimal(item)
ct += 1
Next
If (ct = 0) Then return 0 else return suma
End Function
http://salvoz.com/blog/2013/05/27/sum-result-of-ssrs-lookupset-function/