我有一个数据集,如下所示:
school_id | class_id | recess_num | student_id
----------------------------------------------
27 | 6 | 2 | 12
27 | 6 | 2 | 53
27 | 6 | 2 | 23
27 | 6 | 2 | 47
27 | 14 | 2 | 6
27 | 14 | 2 | 51
27 | 14 | 2 | 42
27 | 14 | 2 | 60这个想法是,来自不同班级的某些学生同时出去休息。以下是几点要点:
我想要创建这个数据的宽表表示,其中所有在每个课间休息的学生都在一排中被捕获。由于学生人数总是相同的,所以我想为每个学生创建新的列:
school_id | class_id | recess_num | student_1 | student_2 | student_3 | student_4
---------------------------------------------------------------------------------
27 | 6 | 2 | 12 | 53 | 23 | 47
27 | 14 | 2 | 6 | 51 | 42 | 60仅使用SQL查询来完成这一任务的最佳方法是什么?
发布于 2019-11-03 01:56:32
select
school_id,
class_id,
recess_num,
case when student_id=12 then student_id end as student1,
case when student_id=53 then student_id end as student2,
case when student_id=23 then student_id end as student3,
case when student_id=47 then student_id end as student4,
from table
group by
school_id,
class_id,
recess_numhttps://stackoverflow.com/questions/58676824
复制相似问题