カテゴリ:

ウィンドウ関数 (ランク関連、ウィンドウフレーム)

LAST_VALUE

値が順序付けられたグループ内の最後の値を返します。

こちらもご参照ください:

FIRST_VALUENTH_VALUE

構文

LAST_VALUE( <expr> ) [ { IGNORE | RESPECT } NULLS ]
                     OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] [ <window_frame> ] )

ウィンドウフレーム 構文の詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。

使用上の注意

  • 他のシステムでのこの関数の実装との互換性のために、関数の引数で { IGNORE | RESPECT } NULLS を指定することもできます。

    LAST_VALUE( <expr> [ { IGNORE | RESPECT } NULLS ] ) OVER ...

  • { IGNORE | RESPECT } NULLS が指定されていない場合、デフォルトは RESPECT NULLS です。つまり、式に NULL 値が含まれ、式の最後の値である場合、 NULL 値が返されます。

  • LAST_VALUE はランク関連の関数であるため、次の要素で構成されるウィンドウを指定する必要があります。

    • PARTITION BY <expr1> 副次句(オプション)。

    • ORDER BY <expr2> オプションの ウィンドウフレーム を含む副次句(必須)。サポートされている追加の順序付けオプション(並べ替え順序、 NULL 値の順序付けなど)の詳細については、 ORDER BY クエリ構成をご参照ください。

  • オプションの ウィンドウフレーム (累積またはスライド)は、関数が計算されるウィンドウ内の行のサブセットを指定します。

    • ウィンドウフレームの場合、この関数は RANGEベースのウィンドウフレームではなく、 ROWSベースのウィンドウフレームのみをサポートします。

      サポート対象

      ROWS BETWEEN ...AND ...

      サポートされていません

      RANGE BETWEEN ...AND ...

    • ウィンドウフレーム が指定されていない場合、デフォルトはウィンドウ全体です。

      ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING

      これは、ウィンドウフレームに次のデフォルトを指定する ANSI 標準とは 異なります

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

    構文や例を含むウィンドウフレームの詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。

SELECT
    column1,
    column2,
    LAST_VALUE(column2) OVER (PARTITION BY column1 ORDER BY column2) AS column2_last
FROM VALUES
    (1, 10), (1, 11), (1, 12),
    (2, 20), (2, 21), (2, 22);

+---------+---------+--------------+
| COLUMN1 | COLUMN2 | COLUMN2_LAST |
|---------+---------+--------------|
|       1 |      10 |           12 |
|       1 |      11 |           12 |
|       1 |      12 |           12 |
|       2 |      20 |           22 |
|       2 |      21 |           22 |
|       2 |      22 |           22 |
+---------+---------+--------------+