小编use*_*347的帖子

在Oracle中连接并分组多行

可能重复:
如何在Oracle中以A,B格式检索两列数据

假设我有一个这样的表:

NAME          GROUP_NAME
name1         groupA
name2         groupB
name5         groupC
name4         groupA
name3         groupC
Run Code Online (Sandbox Code Playgroud)

我想得到这样的结果:

GROUP_NAME     NAMES
groupA         name1,name4
groupB         name2
groupC         name3,name5
Run Code Online (Sandbox Code Playgroud)

如果表中只有一列,我可以通过执行以下操作来连接记录,但是在上下文中进行分组时,我真的没有太多想法.

连接一个列表:

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 
Run Code Online (Sandbox Code Playgroud)

更新:

我现在有一个解决方案LISTAGG:

SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP …
Run Code Online (Sandbox Code Playgroud)

sql oracle grouping concatenation group-concat

30
推荐指数
1
解决办法
8万
查看次数

标签 统计

concatenation ×1

group-concat ×1

grouping ×1

oracle ×1

sql ×1