在交互式报表中显示“ - ”而不是“0”

时间:2013-03-16 20:06:04

标签: oracle-apex

我有以下sql查询,用于创建报告以显示产品的修订历史记录。初始记录是修订版0,如果编辑某些内容它将成为修订版1,依此类推。 我没有在报告中显示“0”,而是希望显示“ - ”,是否可以实现这一目标?

SELECT
product_id,
name,
description,
revision,
revision,reason,
'DETAILS' "VIEW DETAILS"
FROM product_table
WHERE product_id = :P2_product_id
ORDER BY REVISION DESC
--order by case when Revision is null then 1 else 0 end, revision desc

product_id - 数字
名称 - varchar2
描述 - varchar2
修订 - 数字
revision_reason - varchar2

我确实尝试了注释掉的行,但是报告继续显示0而不是 - 。

3 个答案:

答案 0 :(得分:1)

你所追求的是解码功能。

解决方案

SELECT
product_id,
name,
description,
decode(revision,0,'-',revision)revision,
revision_reason,
'DETAILS' "VIEW DETAILS"
FROM product_table
WHERE product_id = :P2_product_id
ORDER BY REVISION DESC
--order by case when Revision is null then 1 else 0 end, revision desc

说明

将列revision,替换为    decode(revision,0,'-',revision)revision,。确保你read how decode works - 它非常有用。

注意

您的SQL Select查询包括:revision,reason,。从看    在您的列定义中,我认为您的意思是revision_reason,。一世    相应地更新了我的解决方案。

答案 1 :(得分:1)

我知道这个问题有点陈旧且已经回答了,但我今天遇到了同样的问题,使用DECODE显示连字符而不是0会导致列类型切换为STRING ,这会阻止正确排序多位数字。

所以,这是一个将列保持为NUMBER的替代方法:

CASE WHEN column = 0 THEN NULL ELSE column END AS column

答案 2 :(得分:0)

您也可以使用nullif(revision,'-')并使用“将空值显示为”属性。