スポンサーリンク

対象レコードより前のレコード値を取得する(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
おすすめの記事