MySQL中橫表和豎表相互轉換


一  豎表轉橫表

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM