SSIS中的行列转置与TSQL中的行列转置有些不同的地方
一、先看下TSQL中的行列转置
有如下表
在表中插入测试数据
要让UserName为列为得到如下结果:
可以通过以下的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中组件构建如下
Derived Column组件中需要派出一个列,并具有相同的值,这里派生出PivotCol列值都为“KeyForPivot”
设置Pivot组件属性
1.选取输入列
2.设置行列转换的列属性
设置PivotCol列的PivotUsage值为1
设置UserName列的PivotUsage值为2
设置Score列的PivotUsage值为3
(PivotUsage属性请参见:http://msdn.microsoft.com/en-us/library/ms140308.aspx)
添加输入例KeyCol,并设置如下属性:
将SourceColumn属性值设置为输入列PivotCol的LineageID,这里是82
添加如下输出列并设置输出列属性
Name:列名
PivotKeyValue:支点值,值为a的行将转为列
SourceColumn:输入列Score列的LineageID
列b,列c的PivotKeyValue分别设置为b,c
完成,运行结果如下
