表逗号分隔行转列

table 1 : 
code wgz06
2 001,0002
3 001,0002,00003

table 2:
id name
001 数学
0002 体育
00003 美术

要求结果
code sql_name
1 数学
2 数学,体育
3 数学,体育,美术
收起
只需要查询出结果
 
 
 
with  temp1  as (
select  a.*,length(wgz06)-length( replace (wgz06, ',' ))+1 my_rn  from  table1 a
),temp2  as (
select  rownum rn  from  dual
connect  by  rownum<=( select  max (my_rn)  from  temp1)
)
select  a.code,wm_concat(b. name )  sql_name  from
( select  a.code,regexp_substr(a.wgz06, '[^,]+' ,1,b.rn) new_id
from  temp1 a
join  temp2 b  on  a.my_rn>=b.rn) a ,table2 b
  where  a.new_id=b.id
  group  by  a.code
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值