0

我正在处理 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(字段!LongMV.Value)= 49

这是做什么的(Right(Fields!SecurityType.Value, 4) = "Cash"

我是 ssrs 报告的新手,任何人都可以帮助我了解这个表达式。

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

谢谢

4

1 回答 1

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 返回的总和等于您所需的值。

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

于 2013-03-06T12:04:56.117 回答