原文: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

结果为表一。

04-13 17:46