2013年9月2日 星期一

[SQL Server 2008R2][SSRS] 邏輯函數 IIf、Choose、Switch

用於流程判斷可以使用 IIf、Choose、Switch 這三個函數。

IIF ( boolean_expression, true_value, false_value )  : 根據布林運算式評估為 true 或 false 而傳回兩值之一。

例如年收入大於 60,000 時,顯示達成,反之則顯示未達成。
=IIf(Fields!YearlyIncome.Value >= 60000,"達成","未達成")

也可以使用巢狀 IIF,例如設定儲存格背景色 BackgroundColor ,當 PctComplete 的值大於等於 10 時,設定為 Green ,小於 10 但大於等於 1 時,則設定為 Blue ,其餘 (值小於 1 ) 設定為 Red。

=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))

太多層的巢狀 IIF 會增加判別的複雜度,因此可以使用 Choose 或 Switch 來取代。


Choose ( index , val_1, val_2 [, val_n ] ) : 從數值清單傳回指定之索引的項目。

例如生日是星期幾的顯示

=Choose(Datepart("w",Fields!BirthDate.Value),"星期日"、"星期一"、"星期二"、"星期三"、"星期四"、"星期五"、"星期六")

第一個參數必須傳回數值的資料。


Switch( boolean_expression_1, true_value_1, boolean_expression_2, true_value_2,[ boolean_expression_n, true_value_n]) : 評估運算式清單,並傳回清單中第一個為 True 之運算式的對應 Object 值。

例如設定儲存格背景色 BackgroundColor ,當 PctComplete 的值大於等於 10 時,設定為 Green ,小於 10 但大於等於 1 時,則設定為 Blue ,等於 1 時,則設定為 Yellow ,小於等於 0 設定為 Red。

=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red")

沒有留言: