MySQL行列转换

score_1

id course score
1 数学 99
1 英语 89
1 法律 98
2 数学 100
2 英语 99
2 法律 87

score_2

id 数学 英语 法律
1 99 89 98
2 100 99 87

RT,需求是将以上两种表样式互相转换:

score_1转score_2,很简单:

select ID
    ,max(case when course='数学' then score end) as '数学'
    ,max(case when course='英语' then score end) as '英语'
    ,max(case when course='法律' then score end) as '法律'
from score_1
group by id;

score_2转score_1:

注意取score字段的字段名用的是 ` ,不是'

select id 
    ,'数学' as course
    ,`数学` as score
from score_2
union all 
select id 
    ,'英语' as course
    ,`英语` as score
from score_2
union all 
select id 
    ,'法律' as course
    ,`法律` as score
from score_2
  

你可能感兴趣的:(MySQL行列转换)