具有重复记录SUM的Lookupset无法正常工作SSRS 2008

时间:2018-11-06 12:00:54

标签: sum lookup ssrs-2008-r2

我在名为Questions的数据集中拥有以下数据,在另一个名为Dataset1的数据集中拥有所有ID

ID   Answer
1    Yes
2    Yes
2    No
2    Yes
3    No

我的预期输出应如下

ID    Yes    No
1     1      0
2     2      1
3     0      1

我正在尝试匹配Dataset1中的ID,并从Questions数据集中获取Answer。 如果我只是使用Lookup,它只是检查第一个匹配项而忽略第二个记录。例如,在上面的数据中,对于ID-2,它正在检查ID为2的第一条记录并计数为“是”,而忽略其他“否”和“是”

= Sum(iif(Lookup(Fields!ID.Value,Fields!ID.Value,Fields!answer.Value,“问题”)=“是”,1,0))

我要像上面的预期输出中一样数所有是和否

我尝试使用Lookupset,但无法正常工作。有没有使用自定义代码的任何更简单的方法。如果需要自定义代码,能否请您提供建议。 预先谢谢你。

2 个答案:

答案 0 :(得分:0)

为什么需要第二个数据集?

在问题数据集上具有一个矩阵,将行按ID分组,然后在每一列中使用总和,如下所示:

=SUM(IIF(Fields!answer.Value="Yes",1,0))
=SUM(IIF(Fields!answer.Value="No",1,0))

答案 1 :(得分:0)

您可以使用以下自定义代码对lookupset的输出进行计数:

Function CountAnswers(ByVal AnswerArray As Object(),   Answer As string) As Object

If AnswerArray Is Nothing Then Return cint(0)
If Answer Is Nothing Then Return "Nothing"

Dim TotalCount As Decimal = New Decimal() 
Dim AnswerPosition As Decimal = New Decimal()

TotalCount = 0 
For AnswerPosition = 0 to AnswerArray.GetUpperBound(0)
    TotalCount  = Switch(IsNothing(AnswerArray(AnswerPosition)),TotalCount, cstr(AnswerArray(AnswerPosition))=Answer,TotalCount + 1, TRUE,TotalCount)
Next

return TotalCount

End Function 

然后在数据集1的矩阵的“是”和“否”下输入以下内容:

Code.CountAnswers(Lookupset(Fields!ID.Value, Fields!ID.Value, Fields!answer.Value,"Questions"),"Yes")
Code.CountAnswers(Lookupset(Fields!ID.Value, Fields!ID.Value, Fields!answer.Value,"Questions"),"No")