listagg单组分组查询整组拼接字段

with orguser as(
     select '2' as userid from dual
     union select '1' as userid from dual
     union select '3' as userid from dual
)
select 
     userid,
     listagg(FOLDERNAME, '/') within group(order by length(FOLDERID)) as FOLDERNAME 
from (
  select dl.FOLDERNAME,ud.userid,dl.FOLDERID from orgdeptlist dl right join (
    select ud.userid,ud.FOLDERID from orguserdeptmap ud join orguser ui
    on ui.userid = ud.userid
  ) ud on dl.FOLDERID in(substr(ud.FOLDERID || '', 0, 6), 
  substr(ud.FOLDERID || '', 0, 9), 
  substr(ud.FOLDERID || '', 0, 12), substr(ud.FOLDERID || '', 0, 15))
)
group by userid;

查询结果

USERIDFOLDERNAME
1xxxx/xxxx/xxx
2xxxx
2xxxx/xxx
--with as 相当于一张临时表(一次分析,多次使用)  
with temp as
 (select 'male' as sex, 'zhangsan' as stu_name from dual 
         union select 'male' as sex,'lisi' as stu_name from dual 
         union select 'female' as sex, 'xiaohong' as stu_name from dual 
         union select 'female' as sex,'xiaozhang' as stu_name from dual 
         union select 'male' as sex,'zhaoliu' as stu_name from dual
)
---select * from temp;
--第二种方法: 使用listagg()方法,可以指定分隔的字符
select t.sex as sex,
       listagg(t.stu_name, ',') within group(order by t.stu_name) as stu_name 
from temp t 
group by t.sex;

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值