文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQL SERVER 2005+ 行列互转函数 PIVOT和UNPIVOT

SQL SERVER 2005+ 行列互转函数 PIVOT和UNPIVOT

时间:2011-01-14  来源:Jeeris

MSDN:http://technet.microsoft.com/zh-cn/library/ms177410.aspx

此函数2005以上版本才有的。

  

PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P

完整语法:

table_source

PIVOT(

聚合函数(value_column)

FOR pivot_column (包含要成为列标题的值的列)

IN(<column_list>)

)

 

UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现

完整语法:

table_source

UNPIVOT(

value_column

FOR pivot_column

IN(<column_list>)

)

 

create table #tb(姓名 varchar(10),课程 varchar(10),分数 int)

insert into #tb values('张三','语文',74)

insert into #tb values('张三','数学',83)

insert into #tb values('张三','物理',93)
 
insert into #tb values('李四','语文',74)

insert into #tb values('李四','数学',84)

insert into #tb values('李四','物理',94)

SELECT * FROM #tb

结果:
姓名         课程         分数
---------- ---------- -----------
张三         语文         74
张三         数学         83
张三         物理         93
李四         语文         74
李四         数学         84
李四         物理         94

(6 行受影响)

 

 

PIVOT 函数:

 

SELECT * FROM(SELECT * FROM #TB PIVOT(MAX(分数) FOR 课程 IN (语文,数学,物理)) a) B

结果:

姓名         语文          数学          物理
---------- ----------- ----------- -----------
李四         74          84          94
张三         74          83          93

(2 行受影响)

 

UNPIVOT 函数:

 

 

--以上面的结果为例子 进行列转行
SELECT * FROM(SELECT * FROM #TB PIVOT(MAX(分数) FOR 课程 IN (语文,数学,物理)) a) B UNPIVOT(分数 for 课程 in([语文],[数学],[物理])) c

结果:

姓名         分数          课程
---------- ----------- -------------------
李四         74          语文
李四         84          数学
李四         94          物理
张三         74          语文
张三         83          数学
张三         93          物理

(6 行受影响)

 

相关阅读 更多 +
排行榜 更多 +
mirrox模组(玩家自制)手机版下载

mirrox模组(玩家自制)手机版下载

休闲益智 下载
集装箱模拟器手机版下载安装

集装箱模拟器手机版下载安装

模拟经营 下载
哔咔漫画app下载免费2025

哔咔漫画app下载免费2025

浏览阅读 下载