可能重复:
如何检索一个Oracle中两列数据,B格式
假设我有一个像这样的表:
NAME GROUP_NAME
name1 groupA
name2 groupB
name5 groupC
name4 groupA
name3 groupC
我想有这样的结果:
GROUP_NAME NAMES
groupA name1,name4
groupB name2
groupC name3,name5
如果只有一个在表列中,我可以通过执行以下操作串连的记录,但与上下文中的分组,我真的没有太多的想法。
Concatatenating一个栏表:
SELECT names
FROM (SELECT SYS_CONNECT_BY_PATH(names,' ') names, level
FROM name_table
START WITH names = (SELECT names FROM name_table WHERE rownum = 1)
CONNECT BY PRIOR names < names
ORDER BY level DESC)
WHERE rownum = 1
更新:
我现在使用的解决方案LISTAGG
:
SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name
不过当感兴趣的情况下,更多的“一般”的解决方案LISTAGG
不可用。