2016-07-19 29 views
1

同一工作簿中有兩個工作表具有相同的結構相同的字段名稱。如何組合來自不同表格的記錄?

例如:

表1

- Officer name mkt 
- s15  peter 15 
- s17  mary 18 
- S32  tom 42 
- S32  tom 89 

表2

- Officer name mkt 
- s56  jason 55 
- s31  alex 34 
- S54  gee 45 

現在我使用ADO運行在Excel-VBA的SQL。

select officer ,name ,sum(mkt) from [$table1] 

現在我想結合這兩個表記錄,並稍後選擇。

這意味着:

表3

- Officer name mkt 
- s15  peter 15 
- s17  mary 18 
- S32  tom 42 
- S32  tom 89 
- s56  jason 55 
- s31  alex 34 
- S54  gee 45 

再後來進行選擇(SQL)。

select officer ,name ,sum(mkt) from [$table3] 

是它能夠在SQL或VBA執行它(我寧願在SQL語句執行的話)?

*我更喜歡使用某種SQL技術來執行它。像連接表的東西?但連接表只能連接不同表中的列。現在我想連接行*

+0

我認爲你需要的'JOIN'條款... –

+0

見(http://stackoverflow.com/questions/9923385/combine-2-excel-tables-into-one-appending-the-data)。 – Jeeped

回答

0

您可以使用公用表表達式將表合併成一個表,然後執行合計和。我正在使用SET NOCOUNT ON;,因爲我之前在Excel中遇到過問題,如果我省略了這一點。兩個表之間的完整外連接也可以工作。

SET NOCOUNT ON; 

WITH CTE AS 
(
    SELECT * 
    FROM [$table1] 
    UNION ALL 
    SELECT * 
    FROM [$table2] 
) 

SELECT office, name, sum(mkt) 
FROM CTE 
GROUP BY office, name 

您也可以嘗試不CTE:?合併2個Excel表格到一個附加數據]

SELECT office, name, sum(mkt) 
FROM(
    SELECT * 
    FROM [$table1] 
    UNION ALL 
    SELECT * 
    FROM [$table2] 
) 
GROUP BY office, name 
+0

創建表格3並不是必須的。但是我想表達一下我希望從這兩個表中獲得'officer,name,sum(mkt)',並在一個表中顯示結果。但是有可能把它縮短嗎? – Monchhichi

+0

這種方法有效。你擔心查詢的字符太多嗎? – Sergio

+0

是的。因爲我的查詢必須選擇如此多的字段。在每個字段名稱上添加't3 .......'非常困難。 – Monchhichi

0
select officer ,name ,sum(mkt) from table1 
    union all 
    select officer ,name ,sum(mkt) from table2 
+0

也許你可以多解釋一下這段代碼的作用爲未來的讀者? –

+0

https://msdn.microsoft.com/en-us/library/ms180026.aspx?f = 255&MSPPError = -2147217396 – shlomo

+0

這不是一個解釋,它是一個鏈接到文檔... –

相關問題