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;

 

---------------------------------------------------2020.4.11分割线-----------------------------------------------------------------------------------------

列转行:
select name,
max(case when subject="语文"
then score end)as 语文,
max(case when subject="数学"
then score end)as 数学,
max(case when subject="英语"
then score end)as 英语
from test
group by name;


行转列:
select name,语文 as score , '语文成绩' subject from test1
union
select name,数学 as score , '数学成绩' subject from test1
UNION
select name,英语 as score , '英语成绩' subject from test1;

 

原来以为可以多水一篇文章呢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值