1

我有下表:

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 来做到这一点?我还应该提到合并或重复消除的排序不是一种选择,因为我的硬件太弱,无法处理我拥有的数据量的排序。

4

1 回答 1

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
于 2013-04-15T05:36:07.767 回答