如何将多行合并为一行

时间:2018-06-27 14:42:25

标签: sql oracle

我有一个非常简单的查询:

select date,route,employee
from information
where date=Trunc(Sysdate)

但是,由于某些路线分配了2个以上的雇员,因此查询将返回两行

enter image description here

但是我想让一条路线排成一行,所以理想的输出应该是:

enter image description here

所以两个名称在同一行中,并与“ |”组合,那么如何在PL / SQL中实现此目标?

2 个答案:

答案 0 :(得分:2)

您可以使用listagg函数,但还必须将“日期和路由”添加到分组函数中

SELECT LISTAGG(emp, ' | ')
     WITHIN GROUP (ORDER BY emp) "Emp",
       MAX(date) "Date",
       MAX(route) "Route"
FROM information
WHERE date=Trunc(Sysdate);

答案 1 :(得分:0)

我很确定之前here已经回答了这个问题。不同版本的Oracle具有不同的解决方案,并且答案很多。