2014-11-08 299 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/