我有BIRT报道的情况。我创建的报告坚持将某些字段显示为空白而不是零。当字段实际上是不返回任何行的子选择时,就会出现这种情况。
例如,如果选择包括:
0 as p3,
然后0显示好。但是,如果选择具有:
(select sum(other_field) from other_table where ...) as p3,
该字段显示为空白。
修改数据以便子选择的行存在导致显示的值,即使它们的结果值为零。
所以我认为BIRT以某种方式处理子选择返回零行作为NULL(它也显示为空单元格)而不是零。有没有人知道如何强制BIRT显示实际的0而不是空单元格?
如果有人需要发布特定于DBMS的答案,我正在使用DB2 / z v8,尽管即使是基于其他供应商的建议也会受到赞赏。
答案 0 :(得分:6)
当列或表达式可能返回NULL时,尝试使用COALESCE函数强制值。
COALESCE((select sum(other_field) from other_table where ...), 0) as p3,
答案 1 :(得分:0)
另一种方式,虽然不是那么优雅但有时是必要的(例如,如果你正在执行你无法改变的存储过程),那就是使用JavaScript强制在运行时显示“0”时间。
使用以下表达式进行数据绑定:
if (dataSetRow["your_data_set"] == null)
{
0
}
else
{
dataSetRow["your_data_set"]
}
根据数据类型,您可能需要将引号添加到零
"0"
表示字符串,没有引号它被视为整数。
答案 2 :(得分:0)
使用十进制数据时,我可以将字段的缩写形式快速+0。
dataSetRow["your_data_set"]+0