[點晴永久免費OA]SQL Server中的行列轉(zhuǎn)換PIVOT/UNPIVOT
在SQL Server 2000中,要想實現(xiàn)行列轉(zhuǎn)換,必須綜合利用聚合函數(shù)和動態(tài)SQL,具體實現(xiàn)起來需要一定的技巧,而在SQL Server 2005中,使用新引進的關(guān)鍵字PIVOT/UNPIVOT,則可以很容易的實現(xiàn)行列轉(zhuǎn)換的需求。
PIVOT的用法: 首先創(chuàng)建測試表,然后插入測試數(shù)據(jù) create table test(id int,name varchar(20),quarter int,profile int); insert into test values(1,''a'',1,1000); insert into test values(1,''a'',2,2000); insert into test values(1,''a'',3,4000); insert into test values(1,''a'',4,5000); insert into test values(2,''b'',1,3000); insert into test values(2,''b'',2,3500); insert into test values(2,''b'',3,4200); insert into test values(2,''b'',4,5500); select * from test; id name quarter profile ----------- -------------- ----------- ----------- 1 a 1 1000 1 a 2 2000 1 a 3 4000 1 a 4 5000 2 b 1 3000 2 b 2 3500 2 b 3 4200 2 b 4 5500 (8 row(s) affected) 使用PIVOT將四個quarter的profile轉(zhuǎn)換成橫向顯示: select id,name, [1] as "一季度", [2] as "二季度", [3] as "三季度", [4] as "四季度" from test pivot( sum(profile) for quarter in ([1],[2],[3],[4]) )as pvt; select * from test; id name 一季度 二季度 三季度 四季度 -------- --------- ----------- -------- ------- ------- 1 a 1000 2000 4000 5000 2 b 3000 3500 4200 5500 (2 row(s) affected) UNPIVOT的用法: 首先建立測試表,然后插入測試數(shù)據(jù) drop table test; create table test(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int); insert into test values(1,''a'',1000,2000,4000,5000); insert into test values(2,''b'',3000,3500,4200,5500); select * from test; id name Q1 Q2 Q3 Q4 -------- ------- --------- --------- -------- -------- 1 a 1000 2000 4000 5000 2 b 3000 3500 4200 5500 (2 row(s) affected) 使用UNPIVOT,將同一行中四個季度的列數(shù)據(jù)轉(zhuǎn)換成四行數(shù)據(jù): select id,name,quarter,profile from test unpivot( profile for quarter in([Q1],[Q2],[Q3],[Q4]) )as unpvt; select * from test; id name quarter profile ----------- ----------- ---------- ----------- 1 a Q1 1000 1 a Q2 2000 1 a Q3 4000 1 a Q4 5000 2 b Q1 3000 2 b Q2 3500 2 b Q3 4200 2 b Q4 5500 (8 row(s) affected) 該文章在 2020/11/13 8:51:11 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |