例如表t1有如下数据:
name, hobby
a 足球
a 篮球
a 乒乓
b 游泳
b 足球
c 篮球
如何用sql语句实现
结果如下:
a|足球,篮球,乒乓
b|游泳,足球
c|篮球
Oracle 数据库 格式化
------解决方案--------------------
貌似只能用存储过程或者函数,简单的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