5

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

非规范化表:

CustomerID -- 类别 -- Category2 -- Category3 -- Category4
1 -- A -- B -- C -- D

标准化后,它应该如下所示:

客户 ID -- 类别
1 -- A
1 -- B
1 -- C
1 -- D

编写 T-SQL 语句来实现这一目标的最佳方法是什么(SQL Server 2008)?

4

1 回答 1

6

使用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;
于 2010-08-09T17:26:39.193 回答