2013-03-06 34 views
0

我工作的SSRS报告,我们在该组段中的一个报告是存在的,对 命名Long-Only一个值的一些表达有如下组列表中的SSRS表达式解释?

=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报告任何人都可以请帮我知道表达。

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

感谢

回答

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返回到您所需的值。

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

+0

感谢ton @Ian Preston – Neo 2013-03-06 12:22:01

+0

您能否帮助我更多我已更新我的问题 – Neo 2013-03-06 13:15:36

+0

我尽我所能回答您的问题。如果你有很多问题,可能最有用的是创建新的问题,而不是修改原始问题,尽管我认为这取决于你的观点,不管你认为他们是否直接相关。无论如何,我希望这有助于。 – 2013-03-06 14:28:28