一、mysql 利用逗号拆分行,逗号拼接行
利用逗号拆分行
1.数据表
2.代码
SELECT
SUBSTRING_INDEX( SUBSTRING_INDEX( a.emp_id, ',', b.help_topic_id + 1 ), ',', - 1 ) AS emp_id,
emp_name,
chnl_id,
branch
FROM
xtc_emp_information a
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( a.emp_id ) - LENGTH( REPLACE ( a.emp_id, ',', '' )) + 1 )
GROUP BY
branch,
chnl_id,
emp_name,
SUBSTRING_INDEX( SUBSTRING_INDEX( a.emp_id, ',', b.help_topic_id + 1 ), ',', - 1 );
3.运行结果
利用mysql 自带函数group_concat() 拼接行
1.测试表
2.代码
SELECT
group_concat(emp_id),chnl_id,branch,
emp_name
FROM
test
GROUP BY
chnl_id,branch,
emp_name
3.运行结果
二、hivesql-根据逗号将一行数据拆成多行
一行拆多行
1、使用explode或posexplode方法
并不限制是逗号,其他分隔符都可以
1.1 对单列实行列转行 explode 配合 lateral view 使用
-- 测试数据
with temp as(select 1 as id ,'a,b,c' as name
union
select 2 as id ,'d,e,f' as name)
测试数据如下:
select id,name,s_name
from temp&nb