Dovresti essere in grado di fare:
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));
Nei tuoi dati, date1
sembra non essere mai NULL
.