LAG
構文
関連項目:
構文、セマンティクス、制限事項、およびvalue_exprの書式の詳細は、「分析ファンクション」を参照してください。
目的
LAGは分析ファンクションです。これは、自己結合せずに、表の2つ以上の行へ同時アクセスを行います。問合せから戻される一連の行およびカーソル位置を指定すると、LAGは、その位置より前にある指定された物理オフセットにある行へアクセスします。
オプションのoffset引数には、0(ゼロ)より大きい整数を指定します。offsetを指定しない場合、デフォルト値は1です。オフセットがウィンドウの有効範囲を超えた場合、オプションのdefault値が戻されます。defaultを指定しない場合、デフォルトはNULLです。
{RESPECT | IGNORE} NULLSは、value_exprのNULL値を計算に含めるか除外するかを指定します。デフォルトはRESPECT NULLSです。
value_exprには、LAGまたは他の分析ファンクションを使用して分析ファンクションをネストできません。ただし、他の組込みファンクション式をvalue_exprで使用できます。
関連項目:
-
LAGの戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例では、employees表の各購買係について、その購買係の直前に雇用された従業員の給与を示します。
SELECT hire_date, last_name, salary,
LAG(salary, 1, 0) OVER (ORDER BY hire_date) AS prev_sal
FROM employees
WHERE job_id = 'PU_CLERK'
ORDER BY hire_date;
HIRE_DATE LAST_NAME SALARY PREV_SAL
--------- ------------------------- ---------- ----------
18-MAY-03 Khoo 3100 0
24-JUL-05 Tobias 2800 3100
24-DEC-05 Baida 2900 2800
15-NOV-06 Himuro 2600 2900
10-AUG-07 Colmenares 2500 2600