【问题标题】:Pivoting columns based on a key基于键的透视列
【发布时间】:2013-04-15 05:09:48
【问题描述】:

我有下表:

key_column INT,
column_type_id INT, --has only 3 values, e.g. 1,2,3
value INT

我想将该表中的数据传输到我的 DW 事实表中,如下所示:

key_column INT,
column_type_id INT,
column_type_1 INT,
column_type_2 INT,
column_type_3 INT

匹配条件如下:

1) 使用 key_column 匹配列 2)使用column_type_id来确定应该插入哪个列值(如果column_type_id = 1然后将值插入column_type_1等。之后丢弃column_type_id并且不要重复行,所以key_column是不同的) .

有没有人知道如何通过 TSQL 或(最好是)SSIS 来做到这一点? 我还应该提到合并或重复消除的排序不是一种选择,因为我的硬件太弱,无法处理我拥有的数据量的排序。

【问题讨论】:

    标签: sql sql-server tsql ssis bids


    【解决方案1】:

    您可以执行INSERT INTO...SELECT 来插入原始表中的透视数据,

    INSERT INTO DWFACT( key_column, 
                        column_type_id, 
                        column_type_1, 
                        column_type_2, 
                        column_type_3
                        )
    SELECT  key_column, ColTypeID, [1], [2], [3]
    FROM    
            (
                SELECT  key_column, 
                        column_type_id as ColTypeID, 
                        column_type_id, 
                        value
                FROM    TableName
            ) org
            PIVOT
            (
                MAX(value)
                FOR column_type_id IN ([1], [2], [3])
            ) pvt
    ORDER   BY key_column
    

    【讨论】:

    • 删除 coltypeid 后,查询完美地完成了这项工作,感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2021-11-25
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多