explode()
列转行
SELECT stu_name, ecourse, escore
from student_score_2
lateral view posexplode(split(course, ',')) cr as a, ecourse
lateral view posexplode(split(score, ',')) sc as b, escore
where a=b;
结果
-- 结果为:
-- 张三 语文 98
-- 张三 数学 95
-- 张三 英语 89
-- 李四 语文 97
-- 李四 数学 88
-- 李四 英语 90
行转列
SELECT stu_name,
concat_ws(',',collect_set(course)) as course,
concat_ws(',',collect_set(score)) as score
from student_score_1
group by stu_name
-- 结果为:
-- 张三 语文,数学,英语 98,95,89
-- 李四 语文,数学,英语 97,88,90