我在BIRT报告中遇到了一个情况。我创建的报告坚持将某些字段显示为空白而不是零。当字段实际上是不返回行的子选择时,就会出现这种情况。

例如,如果选择包括:

0 as p3,

然后显示0就好了。但是,如果选择有:

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

该字段显示为空白。

修改数据以便子选择中存在行会导致显示值, 即使它们的结果值为零.

所以我认为 BIRT 以某种方式将返回零行的子选择视为 NULL(它也显示为空单元格)而不是零。有谁知道如何强制 BIRT 显示实际的 0 而不是空单元格?

如果有人需要发布特定于 DBMS 的答案,我正在使用 DB2/z v8,尽管基于其他供应商的建议也会受到赞赏。

有帮助吗?

解决方案

尝试使用COALESCE函数强制的值时的列或表达可能返回NULL。

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

其他提示

另一种方式,虽然不那么优雅但有时是必要的(例如如果您正在执行一个存储过程 无法更改),就是使用 JavaScript 在运行时强制显示“0”。

使用以下表达式进行数据绑定:

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

根据数据类型,您可能需要在零处添加引号

"0"

表示字符串,不带引号,它被视为整数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top