我试图在SSRS中的表达式中使用表达式,它变得非常复杂。有办法解决这个问题吗?
例如,如果我有多个销售人员和联系人数量,我可以通过将销售额划分为联系人来创建转换率,即
=fields!sales.value/fields!contacts.value
我接下来要做的是使用此功能将销售人员放入不同的频段,以便那些转换率达到阈值的用户可以显示。
=iif(fields!sales.value/fields!contacts.value<0.5,"poor","Ok")
这适用于2个乐队(好的和差的),但是对于我想要的5个乐队来说会变得更复杂。
我必须能够定义第一个变量,然后在iif语句中使用它吗?
如何在SSRS 2008中执行此操作?
提前致谢。
答案 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 )