Dit is slechts voorwaardelijke aggregatie:
select pn, sum(loc = 'a') as a, sum(loc = 'b') as b
from table1
group by pn;
Als je een onbekende lijst hebt van loc
waarden, dan hebt u mogelijk een dynamische query nodig. Google "MySQL dynamische pivot".