【问题标题】:Load data from denormalized file into a normalized table将非规范化文件中的数据加载到规范化表中
【发布时间】:2011-03-27 10:14:42
【问题描述】:

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

非规范化表:

客户 ID -- 类别 -- Category2 -- Category3 -- Category4
1 -- A -- B -- C -- D

当它被标准化后,它应该是这样的:

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

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

【问题讨论】:

  • 我会使用一种编程语言进行迭代并为每行插入 4 次。但这对我来说很舒服。
  • 或者对每个类别使用一个 INSERT 查询。

标签: sql sql-server tsql normalization denormalization


【解决方案1】:

使用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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2017-01-14
    • 2016-05-27
    相关资源
    最近更新 更多