データベース - SQL 関数 - 前後取得 LEAD・LAG

クラウディア 
1. 概要
2. やってみる

1. 概要

 「LEAD」が後ろの行を取り出すもので、「LAG」が前の行を取り出します。  本ページは、下記のサイトを参考にさせていただきました。
【BigQuery】LAG関数,LEAD関数の使い方」
「T-SQL - lag関数/lead関数でn個前/n個後の行を取得する」
「[Redshift] ウィンドウ関数:LAG、LEADを使ってスケジュールの日程間隔などを表示

2. やってみる


SELECT * FROM WEEK;
 で取得すると

1	日
2	月
3	火
4	水
5	木
6	金
7	土
 という結果の得られるテーブルがあります(実際に作った)。  これを下記のような「SQL」で取得すると

SELECT
    DATE
   ,LEAD(DATE, 1) OVER(ORDER BY DATE)
   ,LAG(DATE, 2) OVER(ORDER BY DATE)
   ,NAME
FROM
	WEEK
;
 で取得すると、下記のような結果になります。

1	2		NULL	日
2	3		NULL	月
3	4		1		火
4	5		2		水
5	6		3		木
6	7		4		金
7	NULL	5		土
 前後の行がない場合は、「NULL」になります。  実際に使用する場合は、参考サイトを見る限り、「DateTime」型を使用して、前日比の計算をしたりスケジュールの日程を取得したりすることが多いようです。