将非规范化文件中的数据加载到规范化表中

时间:2010-08-09 17:14:19

标签: sql sql-server tsql normalization denormalization

我收到一个非规范化的文本文件,必须加载到规范化的表中。

非规范化表格:

客户ID - 类别 - 类别2 - 类别3 - 类别4 1 - A - B - C - D

当规范化时,它应该如下:

CustomerID - 类别
1 - A
1 - B
1 - C
1 - D

编写T-SQL语句以实现此目的的最佳方法是什么(SQL Server 2008)?

1 个答案:

答案 0 :(得分:6)

使用UNPIVOT关键字:http://technet.microsoft.com/en-us/library/ms177410.aspx

当然,您需要使用某种OpenRowSet查询替换[File],或使用导入/导出向导将数据导入临时表。

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

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