Reporting services 行组中的SSRS Lookup()应针对不同的ID执行

Reporting services 行组中的SSRS Lookup()应针对不同的ID执行,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,My.RDL文件包含:- 1.Dataset1->Tablix 1(ID、名称) 2.Dataset2->Tablix 2(ID,时间) Tablix1是为Id列分组的行,我想显示Tablix1的总计行。此总计行将包含Sum(时间->表格2)。我使用查找来完成此操作。在这个场景中,对Tablix1中的每一行都执行查找,而我的要求是查找应该只对Tablix1中不同的ID有效 我怎样才能提供唯一的值来查找呢?在这之前,我已经使用自定义代码和函数处理了这个问题 我重新创建了您的场景,并创建了两个表,与

My.RDL文件包含:- 1.Dataset1->Tablix 1(ID、名称) 2.Dataset2->Tablix 2(ID,时间)

Tablix1是为Id列分组的行,我想显示Tablix1的总计行。此总计行将包含Sum(时间->表格2)。我使用查找来完成此操作。在这个场景中,对Tablix1中的每一行都执行查找,而我的要求是查找应该只对Tablix1中不同的ID有效


我怎样才能提供唯一的值来查找呢?

在这之前,我已经使用自定义代码和函数处理了这个问题

我重新创建了您的场景,并创建了两个表,与您在问题中的描述类似

将创建一个附加表来联接两个表并计算时间总和,如下所示:

在突出显示的单元格中,使用以下代码:

=Code.SumLookup(
LookupSet(Fields!ID.Value,Fields!ID.Value,Fields!Time.Value,"DataSetName")
)
用数据集的实际名称替换
DataSetName
(我想您 将其命名为数据集2)

最后进入
报告
菜单/
报告属性…
并选择
代码
选项卡。在文本区域中输入以下代码:

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
我将制作以下表格:

编辑:如果需要时间总和

在需要的单元格中使用此表达式:

=Sum(Fields!Time.Value,"DataSet2")

如果有帮助,请告诉我。

时间是int、datetime还是string字段?。共享tablix和预期结果的示例数据。时间是一个整数字段(秒数)