Dies ist nur eine bedingte Aggregation:
select pn, sum(loc = 'a') as a, sum(loc = 'b') as b
from table1
group by pn;
Wenn Sie eine unbekannte Liste von loc
haben Werte, dann benötigen Sie möglicherweise eine dynamische Abfrage. Google „MySQL dynamischer Pivot“.