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

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

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

有如下表

SSIS中的行列转置(Pivot 透视)_第1张图片

在表中插入测试数据

SSIS中的行列转置(Pivot 透视)_第2张图片

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

SSIS中的行列转置(Pivot 透视)_第3张图片

可以通过以下的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中组件构建如下

SSIS中的行列转置(Pivot 透视)_第4张图片

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

SSIS中的行列转置(Pivot 透视)_第5张图片

设置Pivot组件属性

1.选取输入列

SSIS中的行列转置(Pivot 透视)_第6张图片

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

设置PivotCol列的PivotUsage值为1

设置UserName列的PivotUsage值为2

设置Score列的PivotUsage值为3

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

SSIS中的行列转置(Pivot 透视)_第7张图片

 

 

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

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

SSIS中的行列转置(Pivot 透视)_第8张图片

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

Name:列名

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

SourceColumn:输入列Score列的LineageID

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

SSIS中的行列转置(Pivot 透视)_第9张图片

 

完成,运行结果如下

SSIS中的行列转置(Pivot 透视)_第10张图片

你可能感兴趣的:(行列转置)