我在名为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,但无法正常工作。有没有使用自定义代码的任何更简单的方法。如果需要自定义代码,能否请您提供建议。 预先谢谢你。
答案 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")