,oracle数据库数据格式化输出有关问题

求助,oracle数据库数据格式化输出问题。例如表t1有如下数据:name, hobbya足球a篮球a乒乓b游泳b足球c篮球如

求助,oracle数据库数据格式化输出问题。
例如表t1有如下数据:
name, hobby
a        足球
a        篮球
a        乒乓
b        游泳
b        足球
c        篮球

如何用sql语句实现
结果如下:

a|足球,篮球,乒乓
b|游泳,足球
c|篮球 Oracle 数据库 格式化
[解决办法]
貌似只能用存储过程或者函数,简单的sql是不行的
然后把过程或者函数嵌在sql中
[解决办法]

引用:
貌似只能用存储过程或者函数,简单的sql是不行的
然后把过程或者函数嵌在sql中


sql有什么不可以的

with t as
 (select 'a' name, '足球' hobby
    from dual
  union all
  select 'a' name, '篮球' hobby
    from dual
  union all
  select 'a' name, '乒乓' hobby
    from dual
  union all
  select 'b' name, '游泳' hobby
    from dual
  union all
  select 'b' name, '足球' hobby
    from dual
  union all
  select 'c' name, '篮球' hobby from dual)
select t.name 
[解决办法]
 '
[解决办法]

[解决办法]
 listagg(hobby, ',') within group(order by t.name)
  from t
 group by t.name;

[解决办法]
把上面的within group(order by t.name)
改成
within group(order by rownum)
就ok了。
[解决办法]
SQL> select id
[解决办法]
'
[解决办法]
'
[解决办法]
wm_concat(nn) from test1 group by id;

ID
[解决办法]
'
[解决办法]
'
[解决办法]
WM_CONCAT(NN)
----------------------------
a
[解决办法]
足球,篮球,乒乓
b

[解决办法]
游泳,足球
c
[解决办法]
篮球
[解决办法]

引用:
SQL> select id
[解决办法]
'
[解决办法]
'
[解决办法]
wm_concat(nn) from test1 group by id;

ID
[解决办法]
'
[解决办法]
'
[解决办法]
WM_CONCAT(NN)
----------------------------
a
[解决办法]
足球,篮球,乒乓
b
[解决办法]
游泳,足球
c
[解决办法]
篮球

这个方法是可以的,但是有局限性,“足球,篮球,乒乓”的顺序是不固定的,用order by也没用,所以如果对顺序有要求的时候慎用
[解决办法]
引用:
SQL> select id
[解决办法]
'
[解决办法]
'
[解决办法]
wm_concat(nn) from test1 group by id;

ID
[解决办法]
'
[解决办法]
'
[解决办法]
WM_CONCAT(NN)
----------------------------
a
[解决办法]
足球,篮球,乒乓
b
[解决办法]
游泳,足球
c
[解决办法]
篮球


承教!


[解决办法]
怎么又是和并列的帖
[解决办法]
网上有很多类似的帖子。

借用一下二楼数据:


with t as (
select 'a' name, '足球' hobby from dual union all  
select 'a' name, '篮球' hobby from dual union all  
select 'a' name, '乒乓' hobby from dual union all  
select 'b' name, '游泳' hobby from dual union all  
select 'b' name, '足球' hobby from dual union all  
select 'c' name, '篮球' hobby from dual )
select t.name
[解决办法]
'
------解决方案--------------------


'
[解决办法]
 wmsys.wm_concat(hobby)
from t
group by t.name
/*
a
[解决办法]
足球,篮球,乒乓
b
[解决办法]
游泳,足球
c
[解决办法]
篮球
*/