0

製品のリビジョン履歴を表示するレポートを作成するために使用される次の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
リビジョン-数値
リビジョン_reason-varchar2

コメントアウトされた行を試しましたが、reporは-ではなく0を表示し続けます。

4

3 に答える 3

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,デコードがどのように機能するかを必ず読んでください。これは非常に便利です。

ノート

SQL Select クエリには次のものが含まれます: revision,reason,. revision_reason,列の定義を見ると、代わりに意味があると思います。それに応じてソリューションを更新しました。

于 2013-03-17T00:26:52.563 に答える
1

この質問は少し古く、すでに回答されていることは知っていますが、今日同じ問題に遭遇しましたDECODE。0 の代わりにハイフンを表示するために使用すると、列の型が に切り替わりSTRING、複数桁の数字の適切な順序付けが妨げられます。

したがって、列を次のように保持する代替手段は次のNUMBERとおりです。

CASE WHEN column = 0 THEN NULL ELSE column END AS column
于 2013-05-22T05:20:31.370 に答える