2016-07-19 4 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 для запуска SQL в Excel-VBA.

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 Statement)?

* Я предпочитаю использовать технику sth SQL для ее выполнения. Что-то вроде таблицы join? Но join table только присоединяется к столбцам в разных таблицах. Теперь я хочу объединить строки *

+0

я думаю, что вам нужно 'JOIN' пункт ... –

+0

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

ответ

0

Вы можете использовать общее табличное выражение для объединения таблиц в один, а затем выполнить суммарную сумму. Я использую SET NOCOUNT ON;, потому что у меня были проблемы раньше, если я пропустил это. Также будет работать полное внешнее соединение между двумя таблицами.

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 

Вы также можете попробовать без КТР: [? Объединить 2 таблицы Excel в одну Добавляя данные]

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

не нужно создавать таблицу 3. Но я хочу выразить, что хочу получить «офицер, имя, сумма (mkt)» из обеих таблиц и показать результат в одной таблице. Но возможно ли это сделать? – Monchhichi

+0

Этот подход работает. Вы беспокоитесь, что в запросе появилось слишком много символов? – Sergio

+0

yes .as Мой запрос должен выбрать так много полей. Трудно добавить '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

Это не объяснение, это ссылка на документацию ... –

Смежные вопросы