Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle中带有group by的Concat值_Oracle_Plsql_Oracle10g - Fatal编程技术网

Oracle中带有group by的Concat值

Oracle中带有group by的Concat值,oracle,plsql,oracle10g,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

我的桌子学生

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(xmlement())函数,但连接不遵循列Id顺序

我的数据库版本是Oracle 10.2.0.5.0


谢谢

尝试使用WM_CONCAT功能

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

尝试先对子查询中的值进行排序,然后再使用
wm_concat
。我已经在我的工作站上测试过了,效果很好。无法创建SQLFIDLE,因为它不允许我使用
wm_concat
函数

select dept, wm_concat(name) from
(
 select id, name, dept
   from test 
  order by dept, id, name
) group by dept 
看一看,可能会有所帮助。