SSIS中的行列转置(Pivot 透视)

SSIS中的行列转置与TSQL中的行列转置有些不同的地方

一、先看下TSQL中的行列转置

有如下表

Untitled

在表中插入测试数据

image

要让UserName为列为得到如下结果:

image

可以通过以下的TSQL完成(Pivot语法请参见MSDN:http://msdn.microsoft.com/zh-cn/library/ms177410.aspx

 

select [a] as a,[b] as b,[c] as c
from 
(SELECT UserName,Score FROM dbo.test) AS T
pivot
(
	Sum(Score)
	for t.UserName in
		([a],[b],[c])
)as pvt


而在SSIS中只有test表中的两列是无法做到pivot的

二、SSIS 中的Pivot

在Data Flow中组件构建如下

image

Derived Column组件中需要派出一个列,并具有相同的值,这里派生出PivotCol列值都为“KeyForPivot”

image

设置Pivot组件属性

1.选取输入列

image

2.设置行列转换的列属性

设置PivotCol列的PivotUsage值为1

设置UserName列的PivotUsage值为2

设置Score列的PivotUsage值为3

(PivotUsage属性请参见:http://msdn.microsoft.com/en-us/library/ms140308.aspx)

image

 

 

添加输入例KeyCol,并设置如下属性:

将SourceColumn属性值设置为输入列PivotCol的LineageID,这里是82

image

添加如下输出列并设置输出列属性

Name:列名

PivotKeyValue:支点值,值为a的行将转为列

SourceColumn:输入列Score列的LineageID

列b,列c的PivotKeyValue分别设置为b,c

image

 

完成,运行结果如下

image
posted @ 2011-07-12 01:27  徐某人  阅读(2496)  评论(0编辑  收藏  举报