oracle多行数据合并成一行

时间:2022-11-23 15:05:03
表test(id,name)  数据如下:
id   name
1    张三
2   李四
3   王五
要求查询显示形式如下(即把name字段的所有数据拼起来合并到一行显示)
    AllName
张三-李四-王五
 
select id ,listagg( name, ',' ) within group ( order by id ) as name

from TABLE_NAME
GROUP BY id;

oracle多行数据合并成一行


2------------------------


t_table:col1,col2,col3,col4,col5,col6 
其中col1和col2是每条记录都有值的, 
col1    col2     col3    col4    col5     col6 
jack    杰克      a       a1                   c1 
jack    杰克      a                  b2 
jack    杰克      b      a3        b3       c3 
mary    玛丽     c      a4                   c4 
mary    玛丽     d     a5        b5 
mary    玛丽     c      a6       b6       c6 
  

我想根据col1和col2的唯一决定,来把jack  杰克合成一条记录,mary 玛丽合成一条记录,即: 

col1    col2     col3       col4               col5       col6 
jack    杰克    a,a,b      a1,a3           b2,b3      c1,c3 
mary    玛丽    c,d,c      a4,a5,a6      b5,b6      c4,c6       

请问用Oracle该如何写SQL啊?

SQL:

select t.col1,
       t.col2,
       wm_concat(t.col3) col3,
       wm_concat(t.col4) col4,
       wm_concat(t.col5) col5,
       wm_concat(col6) col6
  from t_table t
 group by t.col1, t.col2