Как получить значения, разделенные запятой в одном столбце, используя SQL - PullRequest
0 голосов
/ 07 марта 2019

У меня есть таблица ниже и ожидаемый результат. Пожалуйста, дайте мне знать, если это возможно, чтобы достичь результата. Пожалуйста, обратитесь к картинке прилагается.

enter image description here

1 Ответ

2 голосов
/ 07 марта 2019

Вы можете использовать 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.
...