我收到一个非规范化文本文件,必须将其加载到规范化表中。
非规范化表:
CustomerID -- 类别 -- Category2 -- Category3 -- Category4
1 -- A -- B -- C -- D
标准化后,它应该如下所示:
客户 ID -- 类别
1 -- A
1 -- B
1 -- C
1 -- D
编写 T-SQL 语句来实现这一目标的最佳方法是什么(SQL Server 2008)?
我收到一个非规范化文本文件,必须将其加载到规范化表中。
非规范化表:
CustomerID -- 类别 -- Category2 -- Category3 -- Category4
1 -- A -- B -- C -- D
标准化后,它应该如下所示:
客户 ID -- 类别
1 -- A
1 -- B
1 -- C
1 -- D
编写 T-SQL 语句来实现这一目标的最佳方法是什么(SQL Server 2008)?
使用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;