web-dev-qa-db-ja.com

PL / SQL Oracle Reportsでデータが見つからない場合に「0」を表示する方法

Oracle Report(11g)で、amountを含む数値フィールドを選択し、フォーマットマスクに999,999,999,999と記載しています。データは次のように表示されます。

データ1 25,000 
データ2 
データ3 23,000 

次に、空のレコード(つまり、Data2)の前に単純な「0」を表示します。数式列(PL/SQL)を追加するか、フィールドのプロパティの口蓋で「0」を「Value if null」に対して定義して初期化することで試してみました。しかし、それは機能しません。

ただし、フォーマットマスクを削除すると、上記の両方の方法で(式列を追加するか、「値がnullの場合」に対して値を定義することによって)値「0」が表示されます。ただし、これを行うと、金額はフォーマットマスクなしで表示されます(つまり、25000と23000)。

上記のシナリオをどのように達成できますか?フォーマットマスクが必要です。空のレコードの前にもb '0'が必要です。つまり、Oracle Reports 11g-64ビットで次の出力が必要です。

データ1 25,000 
データ2 0 
データ3 23,000 
2
user3332231

書式マスクを999,999,999,99 に変更する必要があります。 9形式は、先行ゼロの場合は値を抑制し、0の場合は出力します。

1
Leigh Riffel

別の解決策ですが、良い解決策ではありません、

_select sum(data1), sum(data2), sum(data3) from
(
  select data1, data2, data3 from table1
  UNION ALL
  select 0, 0, 0 from dual
)
_

これがあなたの問題に役立つことを願っています!この問題を解決するための別の優れた解決策も待っています。

データベースにデータがない場合でも、nvl(...,0)を記述しても機能しません。専門家が推奨する解決策を教えてください。ありがとう!

0
Leon