SQL Serverで前レコードの値を参照する②

前回、ROW_NUMBERを使った前レコードの値を参照するSQLを紹介しましたが、別の方法を紹介します。

コーディング例

実行結果

氏名 勤務時間 前日
佐藤 1 500 0
佐藤 2 550 1
佐藤 3 0 2
山本 1 0 0
山本 2 460 1
山本 3 510 2
田中 1 520 0
田中 2 620 1
田中 3 0 2

コーディングの27行目では、OVER句で「ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING」を指定していますが、構文としては「ROWS BETWEEN A AND B」となり、「PRECEDING」は日本語訳すると「先行する」という意味で、「1 PRECEDING」は「1つ前」という意味となります。
よって、「ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING」で「1つ前のレコードから1つ前のレコード」という意味となり、前レコードを参照できます。
注意点としては、複数レコードから抽出した1レコードに対して「ROWS BETWEEN A AND B」を使用しても、前レコードが抽出されていないので、前レコードを参照することはできません。
前レコードを参照するためには、前レコードも抽出する必要があります。

以上、「SQL Serverで前レコードの値を参照する②」の紹介でした。