首页 > 解决方案 > oracle中如何组合成一条记录

问题描述

嗨,我对 oracle 有疑问

我想做以下

select name, type from table_1 where name = 'carlos' group by type, name;

我返回了两条记录

|name |type|
|Carlos| 3 |
|Carlos| 4 |

我想要做的是从以下表格中获取一条记录

|name| type|
|Carlos| 3,4 |

我用 rtrim 试过了,但它让我得到了很多次我只希望它出现一次的类型

Select Name, rtrim(xmlagg(xmlelement(e,type||’,’) type 
Where name = 'carlos' group by name;

我返回的一条记录

|name| type|
|Carlos| 3,4,4,4|

你可以帮帮我吗

标签: sqloracle

解决方案


您只需要使用listagg()功能:

select name, listagg(type,',') within group (order by type) 
  from table_1 
 where name = 'carlos' 
 group by name

如果您有重复type的值并希望在逗号分隔的字符串结果中有所不同,请使用:

select name, listagg(type,',') within group (order by type) 
  from
  (
   select distinct name, type 
     from table_1 
    where name = 'carlos' 
  )
  group by name     

Demo


推荐阅读