Загрузка данных из денормализованного файла в нормализованную таблицу - PullRequest
5 голосов
/ 09 августа 2010

Я получаю денормализованный текстовый файл, который необходимо загрузить в нормализованную таблицу.

Денормализованная таблица:

CustomerID - Категория - Категория2 - Категория3 - Категория4
1- A - B - C - D

Когда это нормализовано, оно должно выглядеть следующим образом:

CustomerID - Категория
1 - A
1 -- B
1 - C
1 - D

Как лучше всего написать оператор T-SQL для достижения этой цели (SQL Server 2008)?

1 Ответ

6 голосов
/ 09 августа 2010

Используйте ключевое слово UNPIVOT: http://technet.microsoft.com/en-us/library/ms177410.aspx

Естественно, вы захотите заменить [File] на какой-то запрос OpenRowSet или использовать мастер импорта / экспорта, чтобы получить данные во временную таблицу.

SELECT CustomerId, Category
FROM 
(
   SELECT CustomerId, Category, Category2, Category3, Category4
   FROM [File]

) tblDenormalized
UNPIVOT
(
   Category FOR Column IN 
   (Category, Category2, Category3, Category4)
) AS unpivot;
...