我正在研究SSRS报告,我们在该组中有一个报告,并且是
一个名为Long-Only
的值表达式如下
=IIF(CDec(Parameters!NAV.Value) > 1,((SUM(Fields!LongMV.Value) - SUM(IIF(Right(Fields!SecurityType.Value, 4) = "Cash" OR Left(Fields!SecurityType.Value, 8) = "Treasury", Fields!LongMV.Value, 0)))/(Parameters!NAV.Value/1000)) -1,0)
上面的表达式是LONGVALUE
我想执行此函数有没有办法这样做(只有这个函数通过放样本值)?
NAV.Value = 1200 SUM(Fields!LongMV.Value)= 49
这是(Right(Fields!SecurityType.Value, 4) = "Cash"
的作用吗?
我是ssrs的新手,可以请任何人帮助我了解表达方式。
我们正在使用存储过程进行报告。
感谢
答案 0 :(得分:1)
格式化它有助于:
=IIF
(
CDec(Parameters!NAV.Value) > 1
,
(
(
SUM(Fields!LongMV.Value) -
SUM
(
IIF
(
Right(Fields!SecurityType.Value, 4) = "Cash" OR Left(Fields!SecurityType.Value, 8) = "Treasury"
, Fields!LongMV.Value
, 0
)
)
) /(Parameters!NAV.Value/1000)
) - 1
, 0
)
所以在这里我们可以看到,对于每个组,表达式都在计算:
If NAV parameter > 1, return 0
Else return group level ((LongMV - Cash Long MV) / NAV parameter / 1000) - 1
Cash Long MV
的位置:
Group level Cash type Long MV + Group level Treasury type Long MV
。
这就是表达式的计算方法。我仍然不确定这里的问题是什么 - 只有你可以根据数据的含义将上述内容置于任何形式的上下文中。
这是否可以与同事进一步讨论?
评论后修改:
Right()
只是一个标准的SSRS / .NET函数,它从字符串的右边返回指定数量的字符..
Right(Fields!SecurityType.Value, 4) = "Cash"
根据“安全类型”值中的最后4个字符,检查计算中是否应包含某些安全类型。例如,这将包括安全类型为结算现金和未结算现金。
对于具有特定值的测试,是将这些值返回到存储过程中的数据集,例如:使其返回总LongMV总和为您所需的值。
或者你可以将它们硬编码到公式中;这不是一个有明确答案的问题。