Я думаю, вы хотите столбцы, которые являются вертикальными "списками". Это не совсем реляционная структура, потому что значения в строках не связаны друг с другом.
Однако вы можете сделать это с помощью условного агрегирования. Однако вам необходимо перечислить значения. В MySQL 8+ это просто с помощью row_number()
, поэтому запрос выглядит так:
select teamid, teamname,
max(case when ptype = 'intern' then peopleid end) as intern,
max(case when ptype = 'reporter' then peopleid end) as reporter
from (select t.*,
row_number() over (partition by teamid, ptype order personid) as seqnum
from t
) t
group by teamid, teamname, seqnum;