三、橫表轉豎表
最近筆試中有 【將豎表轉換為橫表】的題 ,記錄一下橫豎表轉換的sql語句~
豎表結構
create
table table_a
( 姓名 varchar(20
),課程 varchar(20
),成績 int
)insert
into table_a(姓名,課程,成績)
values
('張三'
,'語文',60
)insert
into table_a(姓名,課程,成績)
values
('張三'
,'數學',70
)insert
into table_a(姓名,課程,成績)
values
('張三'
,'英語',80
)insert
into table_a(姓名,課程,成績)
values
('李四'
,'語文',90
)insert
into table_a(姓名,課程,成績)
values
('李四'
,'數學'
橫表結構
create
table table_b
( 姓名 varchar(20
),語文 int
, 數學 int
, 英語 int
)insert
into table_b(姓名,語文,數學,英語)
values
('張三',60
,70,80
)insert
into table_b(姓名,語文,數學,英語)
values
('李四',90
[姓名]
,sum
(case
[課程]
when
'語文'
then
[成績]
end)
as[語文]
,sum
(case
[課程]
when
'數學'
then
[成績]
end)
as[數學]
,sum
(case
[課程]
when
'英語'
then
[成績]
end)
as[英語]
from
[table_a]
group
by[姓名]
select
*from
[table_a]
pivot
(max
([成績]
)for
[課程]in(
[語文]
,[數學]
,[英語]))
as 臨時表
執行結果
[姓名]
,'語文'
as 課程,語文 as
[成績]
from
[table_b]
union
allselect
[姓名]
,'數學'
as 課程,數學 as
[成績]
from
[table_b]
union
allselect
[姓名]
,'英語'
as 課程,英語 as
[成績]
from
[table_b]
order
by[姓名]
,[課程]
select
[姓名]
,[課程]
,[成績]
from
[table_b]
unpivot
([成績]
for[課程]in(
[語文]
,[數學]
,[英語]))
as 臨時表
order
by[姓名]
,[課程]
執行結果:
筆試題 sql語句
建表語句 table structure for score drop table if existsscore create tablescore idint 11 default null,snoint 11 default null,namevarchar 255 default null,s...
sql語句之表建立操作
查詢所有的資料庫 show databases 建立資料庫 create database 資料庫名 刪除資料庫 drop database 資料庫名 sql語句的表操作 選中操做的資料庫 use 資料庫名 檢視資料庫中的所有表 show tables 建立表 create table 表名 id ...
SQL語句之普通行列轉換
假設有張學生成績表 tb rowtocol 如下 name subject result 張三 語文 73 張三 數學 83 張三 物理 93 李四 語文 74 李四 數學 84 李四 物理 94 想變成 姓名 語文 數學 物理 張三 73 83 93 李四 74 84 94 declare sql...