总结 SSRS 中的查找
Summing lookups in SSRS
我有一个 SSRS tablix,它从类似于以下内容的几个数据集中提取数据(已更改以避免解释确切的上下文):
有一个员工数据集,其中包含员工 ID、经理的员工 ID 以及他们完成的任务数,例如
经理员工任务
DATA003 DATA001 118
DATA003 DATA002 42
DATA003 DATA003 94
DATA003 DATA004 118
另一个数据库中有一个数据集,其中给出了针对每个员工的投诉数量,以及得到支持的数量。
链接到员工的 tablix table 提供员工编号、姓名、任务总和,然后进行查找以查找投诉、支持投诉并计算导致投诉的任务百分比或支持投诉。
例如
=lookup(Fields!EMPLOYEE_CODE.Value,Fields!EMPLOYEE_CODE.Value,Fields!Number_of_Complaints.Value,"ComplaintsPerEmployee")
然后在经理字段中分组。
单个员工的数字还可以,当我尝试对所查找的数字求和时出现问题。我开始时期望能够做的是像
这样的表达式
=sum(multilookup(
Fields!EMPLOYEE_CODE.Value,
Fields!EMPLOYEE_CODE.Value,
Fields!Number_of_Complaints.Value,
"ComplaintsPerEmployee"))
在给出每位经理总数的 tablix 行中。但是,这会产生错误。当我尝试时:
=join(Fields!EMPLOYEE_CODE.Value,",")
我收到一个错误。所以我很困惑 - 为什么这不给我员工代码数组以传递给连接或多重查找,就像我可以做 Sum(TASKS) 来总结每个经理下的员工的任务一样。
我无法在源头轻松加入 SQL 中的 table,因为它们位于不同的数据库中,我真的不想复制其他数据库中的任何数据。我知道问题不在于总和,因为上面给出的连接不起作用,而且我已经尝试使用以下自定义代码代替总和:
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
这不起作用,因为多重查找无法将值传递给它。我已经尝试阅读 tablixes、表达式等,但我似乎被我已经知道或不相关的东西淹没了 - 谁能指出我正确的方向?
=SUM(lookup(Fields!EMPLOYEE_CODE.Value,Fields!EMPLOYEE_CODE.Value,Fields!Number_of_Complaints.Value,"ComplaintsPerEmployee"))
我有一个 SSRS tablix,它从类似于以下内容的几个数据集中提取数据(已更改以避免解释确切的上下文):
有一个员工数据集,其中包含员工 ID、经理的员工 ID 以及他们完成的任务数,例如
经理员工任务
DATA003 DATA001 118
DATA003 DATA002 42
DATA003 DATA003 94
DATA003 DATA004 118
另一个数据库中有一个数据集,其中给出了针对每个员工的投诉数量,以及得到支持的数量。
链接到员工的 tablix table 提供员工编号、姓名、任务总和,然后进行查找以查找投诉、支持投诉并计算导致投诉的任务百分比或支持投诉。
例如
=lookup(Fields!EMPLOYEE_CODE.Value,Fields!EMPLOYEE_CODE.Value,Fields!Number_of_Complaints.Value,"ComplaintsPerEmployee")
然后在经理字段中分组。
单个员工的数字还可以,当我尝试对所查找的数字求和时出现问题。我开始时期望能够做的是像
这样的表达式=sum(multilookup(
Fields!EMPLOYEE_CODE.Value,
Fields!EMPLOYEE_CODE.Value,
Fields!Number_of_Complaints.Value,
"ComplaintsPerEmployee"))
在给出每位经理总数的 tablix 行中。但是,这会产生错误。当我尝试时:
=join(Fields!EMPLOYEE_CODE.Value,",")
我收到一个错误。所以我很困惑 - 为什么这不给我员工代码数组以传递给连接或多重查找,就像我可以做 Sum(TASKS) 来总结每个经理下的员工的任务一样。
我无法在源头轻松加入 SQL 中的 table,因为它们位于不同的数据库中,我真的不想复制其他数据库中的任何数据。我知道问题不在于总和,因为上面给出的连接不起作用,而且我已经尝试使用以下自定义代码代替总和:
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
这不起作用,因为多重查找无法将值传递给它。我已经尝试阅读 tablixes、表达式等,但我似乎被我已经知道或不相关的东西淹没了 - 谁能指出我正确的方向?
=SUM(lookup(Fields!EMPLOYEE_CODE.Value,Fields!EMPLOYEE_CODE.Value,Fields!Number_of_Complaints.Value,"ComplaintsPerEmployee"))