Ejecutaría un cursor (con el lenguaje de programación MySQL SP, Java, Python, .NET) en esta consulta:
select Name, Firstname, Lastname, count(1)
from Pruebas
group by Name, Firstname, Lastname
having count(1) > 1
Luego, en las filas devueltas por el cursor, simplemente haga lo que necesite:verifique la instancia de FIN%, verifique la presencia de PersonalKey y actualice en consecuencia.
Para cada fila del cursor, puede abrir un cursor diferente con:
select *
from Pruebas
where Name = the_Name
and Firstname = the_Firstname
and Lastname = the_Lastname
Y ahora, tendrás un cursor interno con todas las filas que modificarás. Si es el que necesita, consérvelo y actualícelo con el valor CLAVE que mencionó. De lo contrario, bórralo.
En Oracle, puede lograr lo que desea en una consulta, pero no creo que de esa manera obtenga el mismo rendimiento que obtendría con este enfoque.
Espero que ayude.