Eseguirei un cursore (con il linguaggio di programmazione MySQL SP, Java, Python, .NET) su questa query:
select Name, Firstname, Lastname, count(1)
from Pruebas
group by Name, Firstname, Lastname
having count(1) > 1
Quindi, sulle righe restituite dal cursore, fai tutto ciò che è necessario:verifica l'istanza FIN%, verifica la presenza di PersonalKey e aggiorna di conseguenza.
Per ogni riga del cursore, puoi aprire un cursore diverso con:
select *
from Pruebas
where Name = the_Name
and Firstname = the_Firstname
and Lastname = the_Lastname
E ora avrai un cursore interno con tutte le righe che modificherai. Se è quello che ti serve, conservalo e aggiornalo con il valore KEY che hai menzionato. Altrimenti, eliminalo.
In Oracle, potresti ottenere ciò che desideri in una query, ma non credo che in questo modo otterrai le stesse prestazioni che otterresti con questo approccio.
Spero che aiuti.