これには少し問題があります。値が NULL や 0 であるかどうかに関係なく、実際の結果が得られる式が必要です。以下を参照してください。
SELECT
[...columns...],
(NVL(SUM(table1.qty_rtnd), 0) + NVL(SUM(table1.qty_defective), 0)) / CASE (NVL(table1.sales, 0)) WHEN 0 THEN 1 END AS six_wk_pct_defective,
[...more columns...]
この特定のインスタンスの値:
table1.qty_rtnd = NULL
table1.qty_defective = 7
table1.sales = 560
この式に CASE ステートメントが含まれておらず、除数が 0 の場合、Oracle SQL Developer は、ゼロで除算できないことを示すエラーを返します。それは問題ありませんが、この数式の被除数部分に CASE ステートメントを適用しようとすると、クエリ結果のフィールドが NULL になってはならないのに NULL になります (この特定のケースでは、数学では 0.0125 になるはずです)。 .
私は何を間違っていますか?CASE、NVL、DECODE、またはその他の関数を使用してこの問題を解決するにはどうすればよいですか?
ありがとう、
-蟻
アップデート:
答えを探している人のために。1つは次の人物から提供されました。
SELECT (NVL (qty_rtnd, 0) + NVL (qty_defective, 0)) / NVL (NULLIF (sales, 0), 1) FROM table1