create table if not exists t_course(
id int,
course string
)
row format delimited fields terminated by ',';
第二步,载入数据,注意文件目录,不要照搬
load data local inpath '/opt/tmp/test/course.txt' into table t_course;
第三步,创建一个新表,对原有表的数据进行处理
create table id_courses as select t1.id as id,t1.course as id_course,t2.course course
from(select id as id,collect_set(course) as course from t_course group by id) t1
join ( select collect_set(course) as course from t_course )t2;
第4步,用case when 解决
select id,
case when array_contains(id_course,course[0]) then 1 else 0 end as a,
case when array_contains(id_course,course[1]) then 1 else 0 end as b,
case when array_contains(id_course,course[2]) then 1 else 0 end as c,
case when array_contains(id_course,course[3]) then 1 else 0 end as d,
case when array_contains(id_course,course[4]) then 1 else 0 end as e,
case when array_contains(id_course,course[5]) then 1 else 0 end as f
from id_courses;
最后,得到答案,如图所示
乐于奉献共享,帮助你我他!



