文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQL SERVER 2005 中 PIVOT 和 UNPIVOT 的用法

SQL SERVER 2005 中 PIVOT 和 UNPIVOT 的用法

时间:2011-03-11  来源:Devil_Zhang

PIVOT的中文意思是“在枢轴上转动”,比如对于一个2维坐标,将横坐标变成纵坐标,将纵坐标变成横坐标。反映在一个Relational Table上的意思就是:变行为列,变列为行。

表一:


表二:
将表一转换成表二:
SELECT * FROM StudentScore
PIVOT
(
SUM(Score) FOR Subject IN ([语文],[数学],[化学],[物理])
)
AS
B

SUM(Score) 是我们需要统计的数据,FOR Subject IN ([语文],[数学],[化学],[物理]是统计的范围)就成了我们最终输出的结构了。

以上部分转自:http://blog.vsharing.com/janezhangxy/A1273548.html

UNPIVOT

建立测试表,插入测试数据

 

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,将同一行中四个季度的列数据转换成四行数据:

 

select   id,name,quarter,profile
from
  test
unpivot
(
  profile
  for quarter in ([Q1],[Q2],[Q3],[Q4])
)
as unpvt

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)


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载