2011-09-15 92 views
1

我想在SSRS中的表達式中使用表達式,它變得非常複雜。有沒有解決的辦法?使用SSRS表達式作爲變量

例如,如果我有多次接觸的銷售和電話號碼,我可以通過將銷售創造的轉化率成聯繫人即

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

我想接下來做的就是用這把什麼將銷售人員分成不同的頻段,以便將具有閾值轉換率的人員以條形顯示。

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

對於2條帶(好的和差的)這是很好的,但對於我想要的5條帶更復雜。

我必須能夠定義第一個變量,然後在iif語句中使用它?

我如何在SSRS 2008中做到這一點?

在此先感謝。

+1

您可以在源數據而不是SSRS中執行這些計算嗎?或者這不是一個選擇? – PaulStock

+0

niktris對你的問題有一個很好的文字回答。但Paul的想法也值得考慮:在SQL查詢中進行這種工作通常更容易或更清晰。 –

回答

1

最好使用開關,返回第一個真正的條件

=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" 
) 

其中值1 <值2 < ... <值N。

最後真正是假像在SQL CASE表達式中使用默認的


的方法是使用自定義的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)