МОЯ структура выглядит как
Y | M | P 2018 | 8 | A 2018 | 8 | A 2018 | 9 | A 2018 | 9 | B
Я стремлюсь достичь
Y | M | A | B 2018 | 8 | 2 | 0 2018 | 9 | 1 | 1
Для этого можно использовать условное агрегирование:
select y,m, count(*) filter (where p = 'A') as a, count(*) filter (where p = 'B') as b from the_table group by y,m order by y,m