2012-05-22 6 views
1

Я создал базу данных с двумя таблицами: Table1 и Table2.Слияние таблиц с использованием MS-Access

Table1 Содержит следующие данные:

Account# Account Owner 
1   Person1 
2   Person2 

Table2 Содержит:

Account#  Date Modified  Status 
1    5/15/2011   Open 
2    4/15/2011   Closed 
1    5/21/2011   Pending 
2    6/15/2011   Cancelled 

Использование SQL, как можно объединить эти две таблицы так, что он даст мне последний статус для каждой учетной записи?

ответ

1

Это будет делать это:

SELECT Table1.[Account#], 
     Table1.[Account Owner], 
     L.LastOfDate, 
     Table2.Status 
FROM ((SELECT Table2.[Account#], 
       Max(Table2.[Date Modified]) AS LastOfDate 
     FROM Table2 
     GROUP BY Table2.[Account#]) AS L 
     INNER JOIN Table1 
      ON L.[Account#]=Table1.[Account#]) 
     INNER JOIN Table2 
     ON (L.[Account#]=Table2.[Account#]) 
      AND (L.LastOfDate=Table2.[Date Modified]); 

будет приводить:

Account# Account Owner LastOfDate  Status 
1   Person1   05/21/2011  Pending 
2   Person2   06/15/2011  Cancelled 
+1

Там немного проблема, если даты на таблице 2, не в порядке, то запрос будет возвращать последний строка вместо текущей с последней датой. –

+0

@HenryTaylor Я изначально ошибочно использовал 'Last()' вместо 'Max()'. Я исправил его сразу, но я не знаю, видели ли вы исправленную версию или нет. Даты не обязательно должны быть в каком-либо отсортированном порядке, но вам нужно убедиться, что у вас есть индексы во всех столбцах, используемых для объединений, включая «Измененная дата». –

+0

Это сработало! Благодарю. –

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