首页 > 代码库 > sql 行转列 PIVOT 列转行 UNPIVOT

sql 行转列 PIVOT 列转行 UNPIVOT

原文: sql 行转列 PIVOT 列转行 UNPIVOT

一:

现有表一(t_table1),想转为表二(t_table2)的格式。

表一:

公司

收入

2013

公司1

12

2013

公司2

22

2013

公司3

32

2012

公司1

42

2012

公司2

52

2012

公司3

62

 

 

表二:

公司1

公司2

公司3

2012

42

52

62

2013

12

22

32

 

 

可使用sql2005之后提供的PIVOT

 

具体操作如下:

 

select 
*
 from   t_table1 t
 
 PIVOT
( sum(收入) FOR  公司 IN ( 公司1,公司2,公司3) )  a

 

结果为表二。

 

二:

也可将表二转为表一,使用UNPIVOT。具体操作如下:

 


select 
*

 from  t_table2 t 
 UNPIVOT
( 收入 FOR  公司 in ( 公司1,公司2,公司3) )  a

 

 

结果为表一。

 

sql 行转列 PIVOT 列转行 UNPIVOT