Ses*_*ame 5 sql t-sql sql-server normalization denormalization
我收到一个非规范化的文本文件,必须加载到规范化的表中.
非规范化表:
客户ID - 类别 - 类别2 - 类别3 - 类别4
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
当然,您需要使用某种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;
Run Code Online (Sandbox Code Playgroud)