Concat在Oracle中使用group by值

时间:2014-06-04 11:29:24

标签: oracle plsql oracle10g

我的表学生就像

Id   Name   Dept
---------------
2    Ball   A
3    Cat    B
1    Dog    C
2    Egg    C
3    Fox    D
4    Gun    A
1    Hen    B
1    Apple  A

现在我希望得到结果

Dept   Names
-------------------
A      Apple,Ball,Gun
B      Hen,Cat 
C      Dog,Egg
D      Fox

这里的连接应该根据Id列的升序来完成。 我已经尝试过使用wm_concat(),xmlagg(xmlelement())函数,但是并没有使用列Id顺序。

我的数据库版本是Oracle 10.2.0.5.0

谢谢

2 个答案:

答案 0 :(得分:2)

首先尝试在子查询上排序值,然后再使用wm_concat。我在我的工作站上测试了它,它工作正常。无法创建一个sqlfiddle,因为它不允许我使用wm_concat函数

select dept, wm_concat(name) from
(
 select id, name, dept
   from test 
  order by dept, id, name
) group by dept 

答案 1 :(得分:0)

尝试使用WM_CONCAT函数,

SELECT dept, WM_CONCAT(name) names
FROM(
     SELECT dept, name
     FROM   students
     order by name
     )
GROUP BY dept
ORDER BY dept;