题
我在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"
表示字符串,不带引号,它被视为整数。
不隶属于 StackOverflow