Por favor vea la respuesta en el siguiente enlace. Resolverá su problema:
Básicamente, no puede eliminar (modificar) la misma tabla que usa en SELECCIONAR. Hay formas de evitarlo documentadas en esa página.
Lo siguiente funcionará haciendo que su select
anidado una tabla temporal.
delete from TAB
where CourseName not in (select temp.CourseName
from (select t.CourseName
from TAB t
group by t.CourseName
having count(t.CourseName) > 100
) as temp
)