PRESENTNNV
構文
目的
PRESENTNNV
ファンクションは、SELECT
文のmodel_clause
でのみ、およびモデル・ルールの右側でのみ使用できます。このファンクションは、cell_reference
がmodel_clause
の実行前に存在し、PRESENTNNV
の評価時にNULLではない場合にexpr1
を戻します。それ以外の場合はexpr2
を戻します。このファンクションは、NVL2
とは異なります。NVL2
は、model_clause
の実行前の状態のデータを評価するのではなく、実行時のデータを評価します。
関連項目:
-
構文およびセマンティクスの詳細は、「model_clause」および「モデル式」を参照してください。
-
比較については、「NVL2」を参照してください。
-
PRESENTNNV
の戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例では、2002年のマウス・パッドの売上を含む行が存在し、その売上値がNULLではない場合、その売上値を変更しません。その行が存在し、売上値がNULLの場合、その売上値を10に設定します。その行が存在しない場合、売上値を10に設定して行を作成します。
SELECT country, prod, year, s FROM sales_view_ref MODEL PARTITION BY (country) DIMENSION BY (prod, year) MEASURES (sale s) IGNORE NAV UNIQUE DIMENSION RULES UPSERT SEQUENTIAL ORDER ( s['Mouse Pad', 2002] = PRESENTNNV(s['Mouse Pad', 2002], s['Mouse Pad', 2002], 10) ) ORDER BY country, prod, year; COUNTRY PROD YEAR S ---------- ----------------------------------- -------- --------- France Mouse Pad 1998 2509.42 France Mouse Pad 1999 3678.69 France Mouse Pad 2000 3000.72 France Mouse Pad 2001 3269.09 France Mouse Pad 2002 10 France Standard Mouse 1998 2390.83 France Standard Mouse 1999 2280.45 France Standard Mouse 2000 1274.31 France Standard Mouse 2001 2164.54 Germany Mouse Pad 1998 5827.87 Germany Mouse Pad 1999 8346.44 Germany Mouse Pad 2000 7375.46 Germany Mouse Pad 2001 9535.08 Germany Mouse Pad 2002 10 Germany Standard Mouse 1998 7116.11 Germany Standard Mouse 1999 6263.14 Germany Standard Mouse 2000 2637.31 Germany Standard Mouse 2001 6456.13 18 rows selected.
この例では、ビューsales_view_ref
が必要です。このビューを作成する方法は、「例」を参照してください。