2016-07-19 6 views
1

同一のブック内に、同じフィールド名を持つ同じワークシートが2つあります。異なるテーブルのレコードを結合するには?

例えば:

表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 

今私は、Excel-VBAでSQLを実行するために、ADOを使用しています。

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

ここで、これらの2つのテーブルレコードを結合し、後で選択したいと思います。

表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ステートメントでそれを行うことを好む)SQLやVBAでそれを実行することができますか?

*私はそれを実行するsthのSQL技術を使用することを好む。テーブルを結合するような何か?しかし、結合テーブルは異なるテーブルの列を結合するだけです。今度は、行を結合します。

+0

私はあなたが 'JOIN'句... –

+0

参照が必要だと思う[データの追加1に2つのExcelのテーブルを結合?] (http://stackoverflow.com/questions/9923385/combine-2-excel-tables-into-one-appending-the-data)。 – Jeeped

答えて

0

共通テーブル式を使用して、テーブルを1つにまとめることができます。私はSET NOCOUNT ON;を使用しています。なぜなら、これを省略すれば、私が以前に問題を抱えていたからです。 2つのテーブル間の完全な外部結合も機能します。

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ずに試すことができます。

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

テーブル3を作成する必要はありませんが、両方のテーブルから 'officer、name、sum(mkt)'を取得し、結果を1つのテーブルに表示することを表明したいと思います。しかし、それを短くすることは可能ですか? – 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

これは説明ではなく、ドキュメントへのリンクです。 –

関連する問題