mysql中行转列

1.使用case when then else end

select 
case 
when stuid=1002 then "李四"  #如果stuid=1002则结果为李四
else "不是李四"   #否则输出这个结果
end as "是否名字为李四"  #end结束标志 必须要有   将其单独作为一个字段名称
from student;  
#总的意思是  在student表中如果stuid是1002的则返回"李四",否则返回值"不是李四"

结果为:

这是原来表的数据

select stuid ,stunm,
Max(CASE WHEN coursenm ="大学语文" THEN scores ELSE 0  END )  as "大学语文",
Max(CASE WHEN coursenm ="新视野英语" THEN scores ELSE 0  END ) as "新视野英语",
Max(CASE WHEN coursenm ="离散数学" THEN scores ELSE 0  END ) as "离散数学",
Max(CASE WHEN coursenm ="概率论与数理统计" THEN scores ELSE 0  END ) as "概率论与数理统计",
Max(CASE WHEN coursenm ="线性代数" THEN scores ELSE 0  END ) as "线性代数",
Max(CASE WHEN coursenm ="高等数学(一)" THEN scores ELSE 0  END ) as "高等数学(一)",
Max(CASE WHEN coursenm ="高等数学(二)" THEN scores ELSE 0  END ) as "高等数学(二)"
from rowtocol
GROUP BY stuid;

猜你喜欢

转载自blog.csdn.net/kevlin_V/article/details/87605593