日本語PDF

ANY_VALUE

目的

ANY_VALUEは、exprの非決定値を1つ返します。これは、集計ファンクションとして使用できます。

ANY_VALUEを使用すると、GROUP BY句を持つ問合せを最適化できます。ANY_VALUEは、グループ内の式の値を返します。これは、最初の値を返すように最適化されています。

これにより、入力行に対して比較が行われないようにし、GROUP BY句の一部としてすべての列を指定する必要もなくなります。値を比較しないため、ANY_VALUEは、GROUP BY問合せのMINまたはMAXよりも迅速に値を返します。

セマンティクス

ALLDISTINCT: これらのキーワードは、ANY_VALUEによってサポートされますが、問合せ結果に影響はありません。

expr: 式には、列、定数、バインド変数またはこれらを含む式を指定できます。

式のNULL値は無視されます。

LONGLOBFILEまたはCOLLECTIONを除くすべてのデータ型をサポートします。

LONGを使用すると、ORA-00997が発生します。

LOBFILEまたはCOLLECTIONデータ型を使用すると、ORA-00932が発生します。

ANY_VALUEは、MINおよびMAXと同じルールに従います。

GROUP BYの指定に基づいて、各グループ内のすべての値を返します。グループ内のすべての行にNULL式の値がある場合はNULLを返します。

ANY_VALUEの結果は決定的ではありません。

制限事項

XMLTypeおよびANYDATAはサポートされていません。

例7-1 集計ファンクションとしてのANY_VALUEの使用

この例では、ANY_VALUEをSHスキーマのGROUP BY問合せ内で集計ファンクションとして使用します。

SELECT c.cust_id, ANY_VALUE(cust_last_name), SUM(amount_sold)
  FROM customers c, sales s
  WHERE s.cust_id = c.cust_id
  GROUP BY c.cust_id;

次の問合せ結果では、最初の11行のみが表示されています。

CUST_ID  ANY_VALUE(CUST_LAST_NAME) SUM(AMOUNT_SOLD)
------- -------------------------- ----------------
   6950 Sandburg                                 78
  17920 Oliver                                 3201
  66800 Case                                   2024
  37280 Edwards                                2256
 109850 Lindegreen                              757
   3910 Oddell                                  185
  84700 Marker                                164.4
  26380 Remler                                  118
  11600 Oppy                                    158
  23030 Rothrock                                533
  42780 Zanis                                   182
...
630 rows selected.