対象レコードより前のレコード値を取得する(LAG関数)
SELECT target_date , item_cd , price, -- 第2引数で遡るステップ数を指定 ここでは2つ前のレコードのpriceを取得 LAG(price, 2) OVER (PARTITION BY item_cd ORDER BY target_date) AS before_2days_price, -- 第2引数を指定しない時は1つ前のpirceを取得 LAG(price) OVER (PARTITION BY item_cd ORDER BY target_date) AS before_1days_price, --第3引数で1つ前のレコードが存在しない場合のデフォルト値を指定 以下では0を設定 LAG(price, 1, 0) OVER (PARTITION BY item_cd ORDER BY target_date) AS before_1days_price_null_is_0 FROM item_sales ORDER BY 1, 2
対象レコードの後ろのレコード値を取得する(LEAD関数)
SELECT target_date , item_cd , price, -- 第2引数で後ろへ行くステップ数を指定 ここでは2つ後のレコードのpriceを取得 , LEAD(price, 2) OVER (PARTITION BY item_cd ORDER BY target_date) AS after_2days_price -- 第2引数を指定しない時は1つ後のpirceを取得 , LEAD(price) OVER (PARTITION BY item_cd ORDER BY target_date) AS after_1days_price --第3引数で1つ後のレコードが存在しない場合のデフォルト値を指定 以下では0を設定 , LEAD(price, 1, 0) OVER (PARTITION BY item_cd ORDER BY target_date) AS after_1days_price_null_is_0 FROM item_sales ORDER BY 1, 2


