想象一个场景,现实生活中一个人有许多手机号已是常态,数据库中也会有类似的结构。
大家肯定想知道listagg()有什么样的效果:
案列分析
一个表中有许多数据,名字叫张三的有许多手机号。希望查询结果出来是分组且清晰。
select * from PersonInFo;
先查询李四。
select 姓名, listagg(手机号,',')
within group (order by 姓名) 手机号
from PersonInFo
where 姓名='李四'
group by 姓名;
再查询张三。
select distinct gd.name dbname ,LISTAGG(gi.INSTANCE_NAME, ',') WITHIN GROUP(ORDER by gi.INSTANCE_NAME )over (partition BY gd.name ) sid_name
from gv$instance gi, gv$database gd
where gi.INST_ID=gd.INST_ID