在SSRS中汇总查找

时间:2015-02-23 15:07:50

标签: vb.net oracle reporting-services ssrs-2008

我有一个SSRS tablix,它从几个类似于以下数据集中提取数据(更改为避免解释确切的上下文):

有一个员工数据集,提供员工ID,经理的员工ID以及他们已经完成的任务数量。

经理员工任务
DATA003 DATA001 118
DATA003 DATA002 42
DATA003 DATA003 94
DATA003 DATA004 118

在另一个数据库中,有一个数据集可以提供针对每位员工的投诉数量以及维持的数量。

tablix,链接到employees表,提供员工编号,姓名,任务总和,然后进行查找以查找投诉,维护投诉并计算导致投诉或维持投诉的任务百分比。

e.g。

=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,",")

我收到错误。所以我很困惑 - 为什么这不会给我一系列员工代码传递给加入或multilookup,就像我可以用Sum(TASKS)来总结每个经理下的员工的任务一样。 / p>

我不能轻易地在源代码中加入SQL中的表,因为它们位于不同的数据库中,我真的不想复制其他数据库中的任何数据。我知道问题不在于总和,因为上面给出的连接不起作用,而且我已经尝试了以下自定义代码来代替总和:

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 

这不起作用,因为multilookup无法将值传递给它。我曾尝试阅读Tablix,表达等等,我似乎被我已经知道或不相关的东西所淹没 - 有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

=SUM(lookup(Fields!EMPLOYEE_CODE.Value,Fields!EMPLOYEE_CODE.Value,Fields!Number_of_Complaints.Value,"ComplaintsPerEmployee"))