2010-03-03 39 views
4

我有一個BIRT報告的情況。我創建的報告堅持要將某些字段顯示爲空白而非零。當字段實際上是一個不返回行的子選擇時,就會出現這種情況。如何強制BIRT顯示零值?

因此,例如,如果選擇包括:

0 as p3, 

則0被顯示還好。但是,如果選擇了:

(select sum(other_field) from other_table where ...) as p3, 

該字段顯示空白。

修改數據以便子選擇存在行會導致顯示的值,即使其結果值爲零也會生成

所以我在想,不知何故BIRT正在處理一個子選擇返回零行爲NULL(它也顯示爲一個空單元格)而不是零。有沒有人有任何想法如何強迫BIRT顯示一個實際的0而不是空單元格?

如果有人需要發佈DBMS特定的答案,我正在使用DB2/z v8,儘管基於其他廠商的建議甚至值得讚賞。

回答

6

嘗試使用COALESCE函數在列或表達式可能返回NULL時強制值。

 
COALESCE((select sum(other_field) from other_table where ...), 0) as p3, 
+0

太棒了!這工作完美。 – paxdiablo 2010-03-03 10:00:11

0

的另一種方式,雖然不是優雅,但有時​​需要(例如,如果你正在執行一個存儲procedue是不能改變),是使用JavaScript來強制「0」顯示在運行時。

使用以下表達式爲您的數據綁定:

if (dataSetRow["your_data_set"] == null) 
{ 
    0 
} 
else 
{ 
    dataSetRow["your_data_set"] 
} 

根據數據類型,你可能需要報價添加到零

"0" 

表示字符串,不包括引號將被處理作爲一個整數。