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 に答える