Reporting services 计算SSRS中的中值

Reporting services 计算SSRS中的中值,reporting-services,ssrs-2012,median,reportbuilder3.0,Reporting Services,Ssrs 2012,Median,Reportbuilder3.0,我们需要能够计算一组统计回报数字的中值——特别是某一日期范围内每份合同的回答数字的中值 数据存储在一个共享数据集中,供报表生成器使用,该共享数据集用于多个合同报表,因此无法对其进行更新。所使用的共享数据集确保了合同报告之间的一致性,因此必须使用 对此已经有了答案(例如&),但这些要求隐藏行/列或使用图形中的计算字段 我们需要一个答案,允许我们使用共享数据集/存储过程,并在SSRS/报表生成器中计算中值。此自定义代码可以添加到报表中: Public Shared Function Median(B

我们需要能够计算一组统计回报数字的中值——特别是某一日期范围内每份合同的回答数字的中值

数据存储在一个共享数据集中,供报表生成器使用,该共享数据集用于多个合同报表,因此无法对其进行更新。所使用的共享数据集确保了合同报告之间的一致性,因此必须使用

对此已经有了答案(例如&),但这些要求隐藏行/列或使用图形中的计算字段


我们需要一个答案,允许我们使用共享数据集/存储过程,并在SSRS/报表生成器中计算中值。

此自定义代码可以添加到报表中:

Public Shared Function Median(ByVal items As Object()) As Decimal
    If items Is Nothing Then
        Return Nothing
    End If

    Dim counter As Integer = items.Length
    If counter = 0 Then
        Return 0
    End If

    System.Array.Sort(items)

    If counter Mod 2 = 1 Then
        Return items(CInt((counter / 2) - 0.5))
    Else
        Dim FirstIndex As Integer = counter \ 2
        Dim SecondIndex As Integer = FirstIndex - 1

        Dim FirstValue As Integer = items(FirstIndex)
        Dim SecondValue As Integer = items(SecondIndex)

        Return (FirstValue + SecondValue) / 2
    End If
End Function
然后可以使用以下
=code.Median(Lookupset(Fields!Contract.Value,Fields!Contract.Value,Fields!Answered.Value,“DS\u CallData\u LKP”))调用它


在本例中,数据集“DS_CallData_LKP”为整个报告供电,但再次被引用以获取要为中值排序的值列表。使用
lookuper()
而不是经常看到的隐藏行/列方法,有助于使报表更易于以后编辑。

我不明白lookuper中的三个参数代表什么。我假设前两个(合同)都引用了我们计算中位数的字段,但第三个(回答)是什么?我记得LookUnder()是“匹配这个,用这个,给我这个,从这里开始”。所以在本例中,我将数据集A中的合同与数据集B中的合同进行匹配,并从数据集B返回应答。我们计算匹配合同后应答的中位数。