如何使用 SQL 在单列中获取以逗号分隔的值

How to get the values seperated by comma in a single column using SQL

我有以下 table 和预期的结果。请让我知道是否有可能实现结果。请参考附图。

您可以使用 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 table 应该有一个 dept_id 作为主键(无重复项)。
  • 你的 table 叫做 department 实际上应该叫做 employee_departments 因为它是一个结合点 table,结合了两个不同的实体。
  • 这个 table 应该使用 emp_id 作为 link 到 employee,而不是 name。即外键关系应该是employee.
  • 的主键