数据拆分需求一则

浏览: 2137

在没有connect by以及拆分函数的时候(impala等),如何实现数据拆分?

数据

image.png

目标

image.png


思路

构造出一个序列,使用cross join来关联截取

with chenxu as
 (select 1 id, 'a,v,s,e,sd,ss' str
    from dual
  union all
  select 2 id, 'avs,esssd,ss' str
    from dual
  union all
  select 3 id, 'a,v,s,e,s,d,s,s' str
    from dual)
, seq as
(
select 1 seq from dual union all
select 2 from dual union all
select 3 from dual union all
select 4 from dual union all
select 5 from dual union all
select 6 from dual union all
select 7 from dual union all
select 8 from dual
)
select s.seq,t.*,
regexp_substr(t.str,'[^,]+', 1, s.seq)
from chenxu t, seq s
where s.seq between 1 and length(t.str) - length(replace(t.str, ',')) + 1
order by t.id,s.seq


that's all

推荐 4
本文由 老头子 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

这思路很不错,利用笛卡尔积实现
回来抄作业

要回复文章请先登录注册