使用SSRS表达式作为变量

时间:2011-09-15 15:56:11

标签: reporting-services

我试图在SSRS中的表达式中使用表达式,它变得非常复杂。有办法解决这个问题吗?

例如,如果我有多个销售人员和联系人数量,我可以通过将销售额划分为联系人来创建转换率,即

=fields!sales.value/fields!contacts.value

我接下来要做的是使用此功能将销售人员放入不同的频段,以便那些转换率达到阈值的用户可以显示。

=iif(fields!sales.value/fields!contacts.value<0.5,"poor","Ok")

这适用于2个乐队(好的和差的),但是对于我想要的5个乐队来说会变得更复杂。

我必须能够定义第一个变量,然后在iif语句中使用它吗?

如何在SSRS 2008中执行此操作?

提前致谢。

1 个答案:

答案 0 :(得分:1)

最好使用Switch返回第一个真实条件

=Switch( 
  fields!sales.value/fields!contacts.value < value1, "very poor",
  fields!sales.value/fields!contacts.value < value2, "poor",
  ...
  fields!sales.value/fields!contacts.value < value(n-2), "good",
  fields!sales.value/fields!contacts.value < value(n-1), "very good",
  True, "excellent"
)

其中value1&lt; value2&lt; ......&lt;值N

最终的True是虚拟的,就像在SQL Case表达式中使用default一样


另一种方法是使用自定义vb代码来创建函数

Public Function GetRating( ByVal rating As Decimal ) As String

Select Case rating

 Case Is < value1
     Return "poor"
...

Case Is < valuen
return "very good"

Case Else
Return "excellent"

End Function

然后在行中使用表达式

= Code.GetRating( fields!sales.value/fields!contacts.value )