平均取决于给定的参数

时间:2018-01-25 01:58:51

标签: reporting-services expression ssrs-2012

我有一个名为DimTiempoMes的月份参数所以当我运行报告预览时,我在组合框中选择那个月,它可以是1到12个。

如果我选择1,则返回第1个月Fields!InventarioDirecto_Monto.Value的值

如果我选择3,则返回第1,2和3月等Fields!InventarioDirecto_Monto.Value的值......

现在我希望得到平均值取决于所选的Fields!InventarioDirecto_Monto.Value

例如:如果我选择值为DimTiempoMes的{​​{1}},则公式将为例如:

10 / InventarioDirecto_Monto Value

执行:DimTiempoMes.Value / Sum(1,2,3,4,5,6,7,8,9,10)

所以我尝试下一个表达式:

10

问题是=SUM(Fields!InventarioDirecto_Monto.Value) / CINT(replace(left(Split(Parameters!DimTiempoMes.Value,"[").GetValue(3),2),"]","")) 总是带有12个月值的总和,因此它总是总和为12个月的值

问题是,如何根据所选参数SUM(Fields!InventarioDirecto_Monto.Value)仅获取Fields!InventarioDirecto_Monto.Value返回的值?

一些数据:

enter image description here

在这张图片中,我在第一列有3,719,因为我使用DimTiempoMes为1:所以我的colum Acum有表达式也应该是3,719因为DimTiempoMes等于3719而且除数等于1因为我搜索1.所以3,719 / 1 = 3791,我得到40,593

其他示例:如果我将DimTiempoMes用作4

enter image description here

我应该得到3719 + 3639 + 3378 + 2999/4 = 3433.73我收到10148

更新

我还尝试添加自定义代码,如:

SUM(Fields!InventarioDirecto_Monto.Value)

和表达式类似:

Function Promedio(ByVal items As Object(),ByVal meses As Object(), ByVal Valor1 As integer) 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
For Each mes As Object In meses
IF CINT(mes) <= Valor1 
Then ct = 1
For Each item As Object In items
If (ct = CINT(mes))
Then suma += Convert.ToDecimal(item)
End If
ct += 1
Next
End If
Next
suma = suma/valor1
If (Valor1 = 0) Then return 0 else return suma
End Function

但我没有得到欲望的结果

0 个答案:

没有答案