Вы группируете по t_subject.id
и ожидаете, что сможете выбрать все функционально зависимые столбцы, такие как t_subject.first_name
и t_subject.last_name
. Это действительно в соответствии со стандартом SQL.
Oracle, однако, здесь не соответствует стандарту и требует от вас явного названия всех столбцов в предложении GROUP BY
, которые вы хотите выбрать неагрегированными.
group by s.id, s.subject_id, s.first_name, s.last_name
должен решить эту проблему.
Другим решением является объединение перед объединением:
SELECT
s.id,
s.subject_id AS subjectId,
s.first_name AS firstName,
s.last_name AS lastName,
sc.countriesOfCit
FROM t_subject s
JOIN
(
select
id_owner,
listagg(countries, ', ') within group (order by countries) AS countriesOfCit
from m_subject_countries
group by id_owner
) sc ON sc.id_owner = s.id;