Ogni volta che inizi a pensare di volere un GROUP BY localizzato dovresti iniziare a pensare a funzioni finestra invece.
Penso che tu stia cercando qualcosa del genere:
select unit_id, time, diag
from (
select unit_id, time, diag,
rank() over (partition by unit_id order by time desc) as rank
from diagnostics.unit_diag_history
) as dt
where rank = 1
Potresti voler aggiungere qualcosa a ORDER BY per rompere anche i pareggi in modo coerente, ma ciò non altererebbe la tecnica generale.