Вы почти у цели. В зависимости от результата, который вы хотите получить, есть три варианта:
select
table1.first,
(select string_agg(table2.second, ', ') from table2 where table1.pkey=table2.fkey)
from table1;
для получения значения в виде простого текста или
select
table1.first,
(select array_agg(table2.second) from table2 where table1.pkey=table2.fkey),
array(select table2.second from table2 where table1.pkey=table2.fkey)
from table1;
для получения массива значений (в двух синтаксисах c путей) или
select
table1.first,
(select json_agg(table2.second) from table2 where table1.pkey=table2.fkey)
from table1;
для получения массива JSON.
Обратите внимание, что я полностью переместил table2
в подзапрос.