目录
0 需求
表名:t
表字段及内容:
a b c
001 A/B 1/3/5
002 B/C/D 4/5
问题:转多行
输出结果如下所示:
a d e
001 type_b A
001 type_b B
001 type_c 1
001 type_c 3
001 type_c 5
002 type_b B
002 type_b C
002 type_b D
002 type_c 4
002 type_c 5
1 问题分析
(1)数据准备
create table t as
select '001' as a,'A/B' as b,'1/3/5' as c
UNION ALL
select '002' as a,'B/C/D' as b,'4/5' as c
(2)问题分析
我们知道多列转多行一般采用UNION ALL实现,如果每一列都是一个拼接的字符串,需要将每个串中内容都提取出来,组成新的行数,对于此类问题,单个列转多行问题我们往往使用explode()函数,因此本题实质上就是,多列转多行加单列(字符串对象