Вы можете использовать listagg()
:
select e.id, e.name, e.sal,
listagg(d.dept, ',') within group (order by d.dept_id) as depts,
listagg(d.dept_id, ',') within group (order by d.dept_id) as dept_ids,
from employee e left join
department d
on e.name = d.name
group by e.id, e.name, e.sal;
Некоторые комментарии к модели данных.
- Ваша таблица
department
должна иметь dept_id
, который является первичным ключом (без дубликатов).
- Ваша таблица, которая называется
department
, должна действительно называться employee_departments
, потому что это соединительная таблица, объединяющая две разные сущности.
- Эта таблица должна использовать
emp_id
в качестве ссылки на employee
, а не name
. То есть отношение внешнего ключа должно быть к первичному ключу employee
.