-- use LAG(column_name, lag) OVER (PARTITION BY x ORDER BY y) select id, version, start_date, lag(dss_end_date, 1) over (partition by id order by version) as previous_row_end_date end_date from table order by id, version;