1) 縱表變橫表
/*創建數據庫表*/
use testbase2
create table Table_A
(
name varchar(20),
course varchar(20),
score int
)
insert into Table_A(name,course,score) values('張三','語文',60)
insert into Table_A(name,course,score) values('張三','數學',70)
insert into Table_A(name,course,score) values('張三','英語',80)
insert into Table_A(name,course,score) values('李四','語文',90)
insert into Table_A(name,course,score) values('李四','數學',100)
/*查詢插入的語句*/
select * from Table_A
/*橫向輸出這張表*/
SELECT name,
sum (case course when '語文' then score else 0 end) as 語文,
sum (case course when '數學' then score else 0 end) as 數學,
sum (case course when '英語' then score else 0 end) as 英語
FROM Table_A
GROUP BY name
2)橫表變縱表
/*縱向輸出這張表*/
create table Table_B
(
name varchar(20),
chinese int,
math int,
english int
)
insert into Table_B(name,chinese,math,english) values('張三',60,70,80)
insert into Table_B(name,chinese,math,english) values('李四',90,100,0)
select * from Table_B
select name,'語文' as 課程,chinese as 成績 from Table_B union all
select name,'數學' as 課程,math as 成績 from Table_B union all
select name,'英語' as 課程,english as 成績 from Table_B
order by name,課程 desc
/查詢學生總人數/
select COUNT(name) 總人數
from Table_B
/查詢張三的平均成績/
select avg(score) 平均成績
from Table_A
where name like '張三';
/查詢李四的最高成績/
select MAX(score) 最高成績
from Table_A
where name like '李四';
/*查詢張三的總成績*/
select SUM(score) 總成績
from Table_A
where name like '張三';
/*查詢姓名,選課數,總成績*/
select name 姓名,count(course) 選課數,SUM(score) 總成績
from Table_A
group by name