Eu executaria um cursor (com linguagem de programação MySQL SP, Java, Python, .NET) nesta consulta:
select Name, Firstname, Lastname, count(1)
from Pruebas
group by Name, Firstname, Lastname
having count(1) > 1
Em seguida, nas linhas retornadas do cursor, faça o que for necessário:verifique a instância FIN%, verifique a presença de PersonalKey e atualize de acordo.
Para cada linha no cursor, você pode abrir um cursor diferente com:
select *
from Pruebas
where Name = the_Name
and Firstname = the_Firstname
and Lastname = the_Lastname
E agora, você terá um cursor interno com todas as linhas que você modificará. Se for o que você precisa, mantenha-o e atualize-o com o valor KEY que você mencionou. Caso contrário, exclua-o.
No Oracle, você pode realizar o que deseja em uma consulta, mas não acho que dessa forma você obterá o mesmo desempenho que obteria com essa abordagem.
Espero que ajude.