2014-11-08 124 views
0

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

我已经在SSIS和SSMS中都使用了pivot,但总是使用比这个任务所需的列更少的列,并且我不知道如何以一种允许大量列和潜在列数的方式来处理它(日期)有所不同。也许这需要动态SQL。构成大部分列的日期可能会延长100行或更多。请注意,如果索引在给定日期没有值,则可能会有空值。

输入数据

Input

这里是所需的输出格式。

Output

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

enter image description here

回答

1

我会用Excel的电源查询外接此。它具有可以使用的Pivot和Unpivot命令。这两个命令的Power Query实现都是动态的,即它们适应输入数据的变化。

对于您的场景,我首先选择Name和Unpivot所有其他列。这会将每个日期列和值转换为一行。然后,我将在名称列上旋转,这将为您的每个名称值生成列。

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

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