Hive 特殊SQL

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

猜你喜欢

转载自blog.csdn.net/qq_29857681/article/details/116932968