Sempre que você começar a pensar que deseja um GROUP BY localizado, deve começar a pensar em funções da janela em vez de.
Acho que você está atrás de algo assim:
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
Você pode querer adicionar algo ao ORDER BY para quebrar os empates de forma consistente, mas isso não alteraria a técnica geral.