COALESCE( LEAD(異動日) OVER (PARTITION BY 社員ID ORDER BY 異動日) - INTERVAL '1 day', CURRENT_DATE() ) AS 終了日 FROM 異動履歴 ORDER BY 社員ID,異動日; LEAD() OVER () で1行下の値を取得 その後 -1 日する
COALESCE( LEAD(異動日) OVER (PARTITION BY 社員ID ORDER BY 異動日) - INTERVAL '1 day', CURRENT_DATE() ) AS 終了日 FROM 異動履歴 ORDER BY 社員ID,異動日; LEAD() OVER () で1行下の値を取得 その後 -1 日する COALESCEで 1行下がないときは現在の日付を使う