17.10 - LAG/LEAD関数の構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)

ANSI

{ LAG | LEAD } ( value_expression [, offset_spec ] ] )
  [ { RESPECT | IGNORE } NULLS ]
  OVER ( [ PARTITION BY expression ] [ order_by_clause ] )
offset_spec
[ offset_value ] [, [ default_value_expression ] ]
order_by_clause
ORDER BY expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
  [ RESET WHEN expression ]

Teradata

{ LAG | LEAD }
  ( value_expression [ { IGNORE | RESPECT } NULLS ] [, offset_spec ] ] )
  OVER ( [ PARTITION BY expression ] [ order_by_clause ] )
offset_spec
[ offset_value ] [, [ default_value_expression ] ]
order_by_clause
ORDER BY expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
  [ RESET WHEN condition ]

構文要素

value_expression
この式に順序付き分析関数を含めることはできません。
value_expressionは必須であり、スカラー値を返す任意の式を指定できます。テーブル関数にすることはできません。
offset_value
0から4096の符号のない整数値。 指定されていない場合、デフォルト値は1になります。
offset_valueは指定された行のウィンドウの現在の行を基準とする物理行の位置を示します。行の位置は、LEAD関数の現在の行の次の行、およびLAG関数の前の行です。
0のoffset_valueは現在の行を指定します。
default_value_expression
スカラー値を返す任意の式。
指定しない場合、値はNULLと見なされます。
ANSIモードで実行する場合、default_value_expressionデータ型はvalue_expressionと一致する必要があります。データ型が一致しない場合は、エラーが発生します。
Teradataモードでは、value_expressionデータ型へのキャストを行ないクエリーを実行することで、データベースはdefault_value_expressionデータ型をvalue_expressionに一致させようとします。キャスト ルール違反がある場合、Vantageではエラー メッセージが表示されます。
IGNORE NULLS
value_expressionが、指定したoffset_valueによって決定される前または次の行がウィンドウ グループのスコープ内にあるNULL値を返した場合、LAGまたはLEADはNULL値を無視します。
その後、LAGまたはLEADは、現在の行から離れた、ウィンドウ グループのスコープ内にある可能性がある前または次の行で非NULLのvalue_expressionを検索し続けます。検索はウィンドウの境界で終了します。
  • LAGの場合、検索はウィンドウ グループの最初の行で終了します。
  • LEADの場合、検索はウィンドウ グループの最後の行で終了します。
検索の終了時に、非NULLのvalue_expressionが見つからない場合、LAGまたはLEADはdefault_value_expressionを返します。
前または次の行がウィンドウ グループのスコープ外の場合、LAGまたはLEADはdefault_value_expressionを返します。
省略可能なNULL句が指定されていない場合、デフォルトのオプションはRESPECT NULLを表わします。
RESPECT NULLS
offset_valueによって確認された前または次の行がウィンドウ グループのスコープ内にあり、value_expression評価がNULLを返した場合、LAGまたはLEADはNULLを返します。この設定は、NULL値が無視されないことを示します。
前または次の行がウィンドウ グループのスコープ外の場合、LAGまたはLEADはdefault_value_expressionを返します。
省略可能なNULL句が指定されていない場合、デフォルトのオプションはRESPECT NULLを表わします。
OVER
LAGまたはLEAD関数を計算する際に、値をグループ化、順序付け、および考慮する方法を指定します。
値は、オプションのPARTITION BY句とオプションのRESET WHEN句によってグループ化されます。値は、指定された行のパーティションのORDER BY句に従ってソートされます。
PARTITION BY expression
関数が操作対象とするグループ。
これはカンマ区切りの値式リストです。
ORDER BY expression
グループまたはパーティション内の値がソートされる順序。
これはカンマ区切りの値式リストです。
ASC
結果が昇順でソートされます。
ソート フィールドが文字列の場合、システムは現在のセッションの照合順序の定義に従って、昇順でソートします。
デフォルトの順序はASCです。
DESC
降順のソート順序。
NULLS FIRST
NULL結果が最初にリストされることを指定します。
NULLS LAST
NULL結果が最後にリストされることを指定します。
RESET WHEN condition
関数の実行対象になる1つまたは複数のグループ。指定された条件の評価に応じて変化します。条件がTRUEと評価されると、指定されたウィンドウ パーティション内に新しい動的パーティションが作成されます。
RESET WHEN句またはPARTITION BY句を指定しない場合は、結果セット全体が単一のパーティションになります。