使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UNPIVOT,则可以很容易的实现行列转换的需求。
在本文中我们将通过两个简单的例子详细讲解PIVOT/UNPIVOT的用法。
PIVOT的用法:
首先创建测试表,然后插入测试数据
create table test(id int,name varchar(20),quarter int,profile int) select * from test (8 row(s) affected) 使用PIVOT将四个季度的利润转换成横向显示: select id,name, id name 一季度 二季度 三季度 四季度 (2 row(s) affected) |
UNPIVOT的用法:
首先建立测试表,然后插入测试数据 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)
id name Q1 Q2 Q3 Q4 (2 row(s) affected) 使用UNPIVOT,将同一行中四个季度的列数据转换成四行数据: select id,name,quarter,profile id name quarter profile (8 row(s) affected) |