组列表中的SSRS表达式解释?

时间:2013-03-06 11:40:28

标签: ssrs-2008 reporting-services

我正在研究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的新手,可以请任何人帮助我了解表达方式。

我们正在使用存储过程进行报告。

感谢

1 个答案:

答案 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总和为您所需的值。

或者你可以将它们硬编码到公式中;这不是一个有明确答案的问题。