Precisamos de detalhes sobre o que não está funcionando, mas acho que você só precisa usar:
UPDATE TablePeople
SET missingdate = (SELECT MAX(te.replacementDate)
FROM TABLEEVENT te
WHERE te.people_id = TablePeople.id)
WHERE missingdate IS NULL
Observações
- MAX está sendo usado para retornar a data de substituição mais recente, por medo do risco de você receber vários valores da subconsulta
- Se não houver registro de suporte em TABLEEVENT, ele retornará nulo para que não haja alterações