2010-03-03 40 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" 

表示字符串,不包括引号将被处理作为一个整数。