如何计算参与保护的雇员并在一个单元格中列出那里的名字?

时间:2019-05-29 09:17:20

标签: sql oracle

我尝试编写一个查询,向我显示一个项目中涉及的员工人数,并在一个单元格中列出那里的姓名。

select p.projectname, count(main.projectnr) "Involved employees" from projects_karl p
join mainpro_karl main
on main.projectnr = p.projectnr
join employees_karl m
on m.employeenr = main.employeenr
group by p.beschreibung
;

此查询计算在某个项目中工作的员工人数。 但我也想列出有关雇员的姓名。

select p.projectname, count(main.projectnr) "Anzahl beteiligter MAs", m.firstname || ' ' || m.surname "Name" from projects_karl p
join mainpro_karl main
on main.projectnr = p.projectnr
join Employees_karl m
on m.employeenr = main.employeenr
group by p.projectname, m.firstname || ' ' || m.surname
;

此查询列表涉及员工,但不包含在单元格中,而是在自己的行中。并且计数功能不再起作用。它仅在每一行中计数为“ 1”。

1 个答案:

答案 0 :(得分:1)

使用listagg()

select p.projectname, count(main.projectnr) "Anzahl beteiligter MAs", 
listagg(m.firstname || ' ' || m.surname, ',') within group (order by p.projectname) "Name" 
from projects_karl p join mainpro_karl main on main.projectnr = p.projectnr
join Employees_karl m on m.employeenr = main.employeenr
group by p.projectname