SQL列转行、行转列
2017-04-28 本文已影响2946人
_子墨
笔者前不久终于发布了自己的APP《小印记》,希望读者能前往App Store下载《小印记》支持一下笔者,谢谢!🙂
《小印记》iOS源码分享--极光推送实践篇
《小印记》iOS源码分享--自定义弹框篇
《小印记》源码分享--极光推送服务器篇
《小印记》iOS源码分享--网络层封装篇
列传行
444.png-- 列传行
drop table studentA;
create table studentA (name varchar(10) ,subject varchar(10) ,score int) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into studentA values ('张三','语文',75),('张三','数学',83),('张三','物理',96);
insert into studentA values ('李四','语文',74),('李四','数学',84),('李四','物理',95);
select name 姓名,
max(case subject when '语文' then score end) 语文,
max(case subject when '数学' then score end) 数学,
max(case subject when '物理' then score end) 物理
from studentA
group by name
行转列
5555.png-- 行转列
drop table studentB;
create table studentB (姓名 varchar(10) ,语文 varchar(10) ,数学 varchar(10) ,物理 varchar(10)); -- 不要加引号''
insert into studentB values ('张三',75,83,96),('李四',74,84,95);
select * from (
select 姓名, '语文' as 科目, 语文 as 分数 from studentB
union all
select 姓名, '数学' as 科目, 数学 as 分数 from studentB
union all
select 姓名, '物理' as 科目, 物理 as 分数 from studentB
) a
(遇插入数据失败问题,请修改字符集为UTF8)
WechatIMG138.png