行专列在实际开发中也是经常用到的
表数据
create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
insert into tb values(‘张三’,‘语文’,74)
insert into tb values(‘张三’,‘数学’,83)
insert into tb values(‘张三’,‘物理’,93)
insert into tb values(‘李四’,‘语文’,74)
insert into tb values(‘李四’,‘数学’,84)
利用 if语句进行行转列
SELECT 姓名,SUM(IF(课程=“语文”,分数,0)) AS 语文,
SUM(IF(课程=“数学”,分数,0)) AS 数学,
SUM(IF(课程=“物理”,分数,0)) AS 物理 FROM tb GROUP BY 姓名
– 使用case when (SQL2000以上)
select 姓名,
max(case 课程 when ‘语文’ then 分数 else 0 end)语文,
max(case 课程 when '数学’then 分数 else 0 end)数学,
max(case 课程 when '物理’then 分数 else 0 end)物理
from tb
group by 姓名
————————————————
版权声明:本文为优快云博主「qq_38490173」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_38490173/article/details/102583682