2016-06-08 3 views
0

Я использую Access и записываю запрос для присоединения к другой таблице с несколькими записями с тем же идентификатором. Таким образом, мне нужно только взять запись с датой MAX, чтобы получить только 1 запись. Я продолжаю получать синтаксическую ошибку.Access Inner Join, чтобы выбрать запись с максимальной датой, чтобы отчетливо выбрать запись из другой таблицы.

Вот мой нормальный Inner Присоединяйтесь к другой таблице:

SELECT 
table2.NameDesc, 
FROM [table1] 
INNER JOIN 
     (
      SELECT [MyDataTable].[ID], [MyDataTable].[NameDesc], MAX([MyDataTable].[MyDate]) as RecentDate 
      FROM [MyDataTable] 
      GROUP BY [MyDataTable].[ID]   
     ) table2 
ON [table1].[ID] = table2.[ID]; 

Обычно на моем внутреннем соединении заявление, я пишу так:

INNER JOIN [table3] ON [table1].[ID] = [table3].[ID])

Так что нужно получить только 1 запись с датой MAX. Я, наконец, смогло нажмите кнопку Сохранить, но когда я нажимаю на DateSheetView, я получаю следующее сообщение об ошибке:

"Your query does not include the specified expression "NameDesc" as part of an aggregate function"

Я новый запрос доступа с [] кронштейном, который отличается от SQL Server.

Как я могу заставить этот запрос Access работать и извлекать запись с максимальной датой из другой таблицы?

Любая помощь понесена.

Благодаря

ответ

1

При использовании агрегатной функции, как MAX, вам необходимо включить все другие столбцы, возвращающиеся в составе группы по. Чтобы запрос выполнялся без ошибок, вы можете сделать это:

SELECT 
    table2.NameDesc 
    FROM [table1] 
    INNER JOIN 
    (
     SELECT [MyDataTable].[ID], 
       [MyDataTable].[NameDesc], 
       MAX([MyDataTable].[MyDate]) as RecentDate 
     FROM [MyDataTable] 
     GROUP BY [MyDataTable].[ID], 
        [MyDataTable].[NameDesc]   
    ) table2 
    ON [table1].[ID] = table2.[ID]; 
Смежные вопросы