2013年9月3日 星期二

[SQL Server 2008R2][SSRS] 空值補零

在 SSRS 設計報表時,常會遇到空值的問題,為了美觀或使用者閱讀,會將空值欄位補零。在一般的 SQL 語法查詢可以使用以下方式來補零

SQL : Select ProductName, IsNull(SaleAmount, 0) From OrderDetail

Oracle : Select ProductName, Decode(SaleAmount,null,0)

但在 SSRS 的矩陣物件中就沒效了!因為 SQL 語法補零是在產生資料集的時候補空值為零,在使用矩陣物件設計報表時,是先產生資料集,然後將資料集套在矩陣物件中,當行列交錯未產生值時,才會發生空值,所以使用 SQL 語法,是無法解決矩陣物件中空值補零的問題。

若是未做彙總的詳細資料時 ( 通常是出現在資料表物件中 ),可使用以下的運算式
 = IIF(Fields!SALES_AMT.Value is Nothig , 0 , Fields!SALES_AMT.Value)


若儲存格有經過彙總的時,可使用以下運算式
= IIF(Count(Fields!SALES_AMT.Value) = 0 , 0 , Sum(Fields!SALES_AMT.Value))
= IIF(Sum(Fields!SALES_AMT.Value) = 0 , 0 , Sum(Fields!SALES_AMT.Value))


當在計算比率時,為了避免除與零的錯誤,會使用以下運算式,將分母為零的狀況修正
= IIF (分母 = 0 , 0 ,分子 / 分母)

沒有留言: