Этот специальный код можно добавить в отчет:
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_CallData_LKP"))
В этом примере набор данных "DS_CallData_LKP" включает весь отчет, но обращается к нему снова, чтобы получить список значений, которые будут отсортированы по медиане. Использование lookupset()
вместо метода скрытых строк / столбцов, который часто встречается, помогает упростить отчет для последующего редактирования.