Chaque fois que vous commencez à penser que vous voulez un GROUP BY localisé, vous devriez commencer à penser à Fonctions de fenêtre à la place.
Je pense que vous cherchez quelque chose comme ça :
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
Vous voudrez peut-être ajouter quelque chose à ORDER BY pour rompre également les égalités, mais cela ne modifiera pas la technique globale.