PIVOT 和 UNPIVOT实例使用

       PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。

 

1、PIVOT 使用实例

先建立一个临时表做为例表:

 1 create table #PIVOT (id int,name varchar(50),[subject] varchar(50),val decimal(18,2))
 2 
 3 INSERT INTO #PIVOT VALUES (1,'张三','语文',54.12);
 4 INSERT INTO #PIVOT VALUES (2,'张三','数学',25.3);
 5 INSERT INTO #PIVOT VALUES (3,'张三','外语',69);
 6 INSERT INTO #PIVOT VALUES (4,'张三','物理',15.23);
 7 INSERT INTO #PIVOT VALUES (5,'张三','化学',15.02);
 8 
 9 INSERT INTO #PIVOT VALUES (6,'李四','语文',54.12);
10 INSERT INTO #PIVOT VALUES (7,'李四','数学',25.3);
11 INSERT INTO #PIVOT VALUES (8,'李四','外语',69);
12 INSERT INTO #PIVOT VALUES (9,'李四','物理',15.23);
13 INSERT INTO #PIVOT VALUES (10,'李四','化学',15.02);

表的内容:

使用PIVOT 语句:

 

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]

运行结果:

 

2、UNPIVOT实例

建立一个临时表结构:

1 CREATE TABLE #pvt (VendorID int, Emp1 int, Emp2 int,
2     Emp3 int, Emp4 int, Emp5 int);
3 
4 INSERT INTO #pvt VALUES (1,4,3,5,4,4);
5 INSERT INTO #pvt VALUES (2,4,1,5,5,5);
6 INSERT INTO #pvt VALUES (3,4,3,5,4,4);
7 INSERT INTO #pvt VALUES (4,4,2,5,5,4);
8 INSERT INTO #pvt VALUES (5,5,1,5,5,5);

表内容:

UNPIVOT语句:

1 SELECT VendorID, Employee, Orders
2 FROM 
3    (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
4    FROM #pvt) p
5 UNPIVOT
6    (Orders FOR Employee IN 
7       (Emp1, Emp2, Emp3, Emp4, Emp5)
8 )AS ss;

运行结果:

 

 

 

转载于:https://www.cnblogs.com/a-fei/archive/2011/04/13/2014559.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值