pivot用於將行轉為列,完整語法如下:
table_source
pivot(
聚合函式(value_column)
for pivot_column
in()
)unpivot用於將列轉為行,完整語法如下:
完整語法:
table_source
unpivot(
value_column
for pivot_column
in()
)以上語法可以理解為value_column欄位與pivot_column欄位的行列(列行)轉換,pivot_column欄位顯示的列/行為column_list
--建張表table_a
create table table_a(name varchar(8),math int,english int,chinese int)
insert into table_a values('小a',80,90,88)
insert into table_a values('小b',70,90,85)
insert into table_a values('小c',75,95,85)
insert into table_a values('小d',80,90,75)
--原始表資料
select * from table_a
name
math
english
chinese
小a80
9088
小b70
9085
小c75
9585
小d80
9075
--unpivot用於將列轉為行
select subject,name,grade from table_a
unpivot(grade for subject in ([math],[english],[chinese])) as s
subject
name
grade
math
小a80
english
小a90
chinese
小a88
math
小b70
english
小b90
chinese
小b85
math
小c75
english
小c95
chinese
小c85
math
小d80
english
小d90
chinese
小d75
--pivot函式用於將行轉為列
select * from
(select subject,name,grade from table_a
unpivot(grade for subject in ([math],[english],[chinese])) as s
) as a
pivot(sum(grade) for name in ([小a],[小b],[小c],[小d])) as b
subject
小a小b
小c小d
chinese
8885
8575
english
9090
9590
math
8070
7580
實現多行多列轉換,請參考:
PIVOT函式與UNPIVOT函式的運用
pivot用於將行轉為列,完整語法如下 table source pivot 聚合函式 value column for pivot column in unpivot用於將列轉為行,完整語法如下 完整語法 table source unpivot value column for pivot co...
unpivot與pivot的聯合使用
1 序號 張三 姓名 85 語文 85 數學 85 英語 85 歷史 85 地理 85 生物 85 化學 into tunion all select 2 序號 李四 姓名 85 語文 85 數學 85 英語 85 歷史 85 地理 85 生物 85 化學 union all select 3 序號...
PIVOT 和 UNPIVOT例項使用
表的內容 1 select subject 張三 李四 from 2 select subject name,val from pivot 3 as p1 4 pivot max val for name in 張三 李四 as p2 5 order by p2.subject 執行結果 表內容 執...