sql 一行 换 多行多列

时间:2022-04-12 10:28:52
有如下一行数据

学生1 学生2 学生3 语文1 语文2 语文3 数学1 数学2 数学3
贾某  艺谋  并某  69    78    90    56    85    89


请问如何转换成:

学生 语文 数学
贾某 69   56
艺谋 78   85
并某 90   89

总分 237  230    467



答:

select  学生1,语文1,数学1  from  tb
union  all
select  学生2,语文2,数学2  from  tb
union  all
select  学生3,语文3,数学3  from  tb
union  all
select  '总分' ,语文1+语文2+语文3,数学1+数学2+数学3  from  tb