我有下表:
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_id之后将值插入column_type_1等,并且不要生成重复的行,因此key_column是不同的)
有没有人知道如何通过TSQL或(最好)SSIS来做到这一点? 我还应该提到合并或重复消除的排序不是一个选项,因为我的硬件太弱,无法处理我所拥有的数据量的排序。
答案 0 :(得分: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