zoukankan      html  css  js  c++  java
  • 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

    曾经年少多少事 而今皆付谈笑中!

  • 相关阅读:
    类和对象
    关联查询
    重点函数
    三大范式
    主外键
    软件开发的项目周期
    什么是事务
    索引
    视图
    数据库对象
  • 原文地址:https://www.cnblogs.com/xuf22/p/2103578.html
Copyright © 2011-2022 走看看