【问题标题】:Pivot or Unpivot a dataset using Excel, SSIS or SQL Server使用 Excel、SSIS 或 SQL Server 透视或取消透视数据集
【发布时间】:2014-11-08 16:14:06
【问题描述】:

我有一个包含各种市场指数、日期和数值的 Excel 文件。在此文件中,左侧有一列代表市场指数名称,右侧是许多日期列。我可以在 Excel、SSIS 或 SQL Server 中执行此数据透视。我有每个程序的最新版本。我不想简单地在 Excel 中复制和粘贴特殊的转置。我希望解决方案尽可能自动化。我怀疑将这些数据加载到 SSMS 中并使用 SQL 将是最简单的。如果需要,我可以更改日期的格式。

我在 SSIS 和 SSMS 中都使用过数据透视,但列数总是少于此任务所需的列数,并且不确定如何以允许大量列和潜在列数的方式处理它(日期) 改变。也许这需要动态 SQL。构成大部分列的日期可能会扩展 100 行或更多行。请注意,如果索引在给定日期没有值,则可能存在空值。

输入数据

这是所需的输出格式。

这是加载到 SSMS 2012 中的数据。日期成为列标题。转置日期和索引名称的相同目标。

【问题讨论】:

    标签: sql-server ssis etl


    【解决方案1】:

    我会为此使用 Excel Power Query 加载项。它具有您可以使用的 Pivot 和 Unpivot 命令。两个命令的 Power Query 实现都是动态的,即它们会根据输入数据的变化进行调整。

    对于您的方案,我将首先选择名称并取消透视所有其他列。这会将每个日期列和值转换为一行。然后我会在 Name 列上进行透视,这将为您的每个 Name 值生成列。

    要自动执行此过程,您只需几行 VBA 代码或脚本代码即可打开、刷新和保存 Excel 文件(包括 Power Queries)。有很多选择,例如

    http://southbaydba.com/2013/09/10/part-5-power-query-api-refreshing-data-indeed/

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多