2015-11-17 113 views
0

我有一個Excel工作表,其中包含來自SQL查詢的數據。我需要對這些值執行一些聚合以獲得最小和最大年數以及字段列表中的最小和最大季度。我需要根據每年的季度數來計算每年的卷的總數。從Excel工作表和聚合數據填充的SSIS變量

Volume || Start Year ||Start Quarter || End Quarter || End Year 
    3   2013   2    4   2016 

這些年份的季度差異會給我所選年份的所有數量的總數。

我想爲最小和最大年份以及最小和最大季度分配變量以查找總量。是否可以爲Excel工作表中的每個項目分配一個SSIS變量,然後計算所選年份的卷數量?

回答

0

在SSIS包控制流程中,您可以使用執行SQL任務調用存儲過程來執行所有這些操作。從這裏可以採取一些方法。

1)應用填充Excel文件的原始SQL查詢來填充臨時表。使用臨時表執行彙總,並將它們輸出到可在「執行SQL任務編輯器」的「結果集」中定義的變量。

2)如果應用原始SQL查詢不是一個選項,並且您必須從Excel文件讀取,那麼您仍將應用第一個選項的建議,但存儲過程將應用OPENROWSET命令來調用您的Excel文件和包含的工作表。該命令將根據用於創建文件的Excel版本而略有不同。以下示例基於Excel版本2007及更高版本(.xlsx文件擴展名)。爲了使其工作,您需要在運行SSIS的計算機上安裝AccessDatabaseEngine.exe驅動程序。

SELECT * INTO #Temp FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
          'Excel 12.0 Xml;HDR=YES;Database=C:\folder\MyExcelFile.xlsx', 'SELECT * FROM [Sheet1$]') 

以下鏈接更好的解決了使用OPENROWSET的細節。 http://blog.learningtree.com/using-openrowset-to-read-excel-worksheets-from-sql-server-part-2-linked-sql-queries/

以下鏈接提供了一些有關設置由執行SQL任務調用的存儲過程的詳細信息,以返回結果集下定義的輸出。 SSIS Execute SQL Stored Procedure output parameter type mismatch

希望這會有所幫助。

+0

謝謝。這工作正常。 –

相關問題