2013-04-15 3 views
1

У меня есть следующая таблица:Поворотные колонны на основе ключа

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

Я хочу передать datat из этой таблицы в моей 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, затем в sert value to column_type_1 и т. д. после этого отмените column_type_id и не создавайте повторяющиеся строки, поэтому key_column различен) .

Кто-нибудь знает, как это сделать либо TSQL, либо (желательно) SSIS? Я также должен упомянуть, что сортировка для слияния или устранения дубликатов не является вариантом, потому что мое оборудование слишком слабое, чтобы обрабатывать сортировку количества данных, которые у меня есть.

ответ

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 
+0

После удаления coltypeid запрос сделал свою работу отлично, спасибо за помощь :) – kyooryu

Смежные вопросы