Você deve ser capaz de fazer:
update t
set date1 = greatest(date1, coalesce(date2, date1), coalesce(date3, date1), coalesce(date4, date1))
where date1 < greatest(date1, coalesce(date2, date1), coalesce(date3, date1), coalesce(date4, date1));
Em seus dados,
date1
parece nunca ser NULL
.