一 豎表轉橫表
1. 首先創建豎表
create table student (
id varchar(32) primary key,
name varchar (50) not null,
subject varchar(50) not null,
result int);
2. 插入數據
insert into student (id, name, subject, result) values ('0001', '小明', '語文', 83);
insert into student (id, name, subject, result) values ('0002', '小明', '數學', 97);
insert into student (id, name, subject, result) values ('0003', '小明', '英語', 93);
insert into student (id, name, subject, result) values ('0004'', '小白', '語文', 93);
insert into student (id, name, subject, result) values ('0005', '小白', '數學', 93);
insert into student (id, name, subject, result) values ('0006', '小白', '英語', 95);
3. 查詢數據
select * from student;
4. 想要將數據顯示為橫表, 即如下形式
廢話不多說了, 直接上sql語句:
select name as '姓名',
max(case subject when '語文' then result else 0 end) '語文',
max(case subject when '數學' then result else 0 end) '數學',
max(case subject when '英語' then result else 0 end) '英語'
from student group by name;
二, 橫表變豎表
1. 創建橫表
create table student1 (
id varchar(32) primary key,
姓名 varchar(50) not null,
語文 int,
數學 int,
物理 int
);
2. 插入數據
insert into student1 (id, 姓名, 語文, 數學, 物理) values ('0001','小張', 93, 84, 99);
insert into student1 (id, 姓名, 語文, 數學, 物理) values ('0002','小馬', 86, 92, 90);
3. 查詢數據
select * from student1;
4. 將橫表數據轉換為豎表的形式, 即如下形式:
對應的sql語句:
select*from
(
select 姓名 as Name , '語文' as Subject , 語文 as result from student1
union all
select 姓名 as Name , '數學' as Subject , 數學 as result from student1
union all
select 姓名 as Name , '物理' as Subject , 物理 as result from student1
) t
order by name;
轉載 https://www.cnblogs.com/rodge-run/p/7159483.html