Specify the alias name before FROM statement
Meaning, you are deleting from the aliased table.
delete o1
from @O as o1
where ACount = 0
and exists ( select Month
from @O o2
where o1.Month = o2.Month
and o2.ACount > 0)
Result