4

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

例如,如果选择包括:

0 as p3,

然后0显示正常。但是,如果选择具有:

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

该字段显示为空白。

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

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

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

4

3 回答 3

6

当列或表达式可能返回 NULL 时,尝试使用 COALESCE 函数强制一个值。

COALESCE((select sum(other_field) from other_table where ...), 0) as p3,
于 2010-03-03T09:10:54.453 回答
1

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

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

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

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

"0"

表示字符串,不带引号将其视为整数。

于 2013-07-11T10:51:21.027 回答
0

在使用十进制数据时,我能够对字段进行快速 +0 作为缩短版本。

dataSetRow["your_data_set"]+0
于 2020-11-19T20:52:31.313 回答