Hola sizne.
A ver...
¿ Lo que queres es que se eliminen las apariciones de registros duplicados cuya calificacion sea 'Reprobado' ?
Si es eso bastaría con modificar el código sql así :
Código:
DELETE FROM PRUEBA
WHERE IdM NOT IN(
SELECT MAX(IdM) FROM PRUEBA
GROUP BY CodigoM)
AND CalificacionM = 'Reprob'
Saludos.