Внутреннее объединение + установка максимальной даты + наименование в ACCESS SQL - PullRequest
0 голосов
/ 11 мая 2019

Я переношу запрос из таблиц, хранящихся в MS SQL Server, в MS Access 2016. Кажется, я не могу понять, как использовать очень распространенное внутреннее соединение max_date из моего запроса SQL и импортировать в мой запрос Access.

Я искал сайт и видел много объяснений, как это сделать в SQL, и мой запрос в SQL работает просто отлично.Мой запрос на доступ не будет работать.

INNER JOIN (
    SELECT dbo_LTS_TRANSACTION_HISTORY.[RFIDTAGID], max(dbo_LTS_TRANSACTION_HISTORY.[TRANSCATION_DATE]) as [max_trxn_date]
    FROM dbo_LTS_TRANSACTION_HISTORY
    GROUP BY dbo_LTS_TRANSACTION_HISTORY.[RFIDTAGID]) as b
ON dbo_LTS_TRANSACTION_HISTORY.[RFIDTAGID] = b.[RFIDTAGID] AND (dbo_LTS_TRANSACTION_HISTORY.[TRANSCATION_DATE] = b.[max_trxn_date]))

Я ожидаю, что мой [TRANSCATION_DATE] будет содержать только [max_trxn_date], поэтому для каждой [RFIDTAGID] извлекается только одна максимальная запись даты.Не называя объединение "как b", я не знаю, как заставить это работать.Access, похоже, не принимает структуру именования, к которой я привык в SQL.Я получаю сообщение об ошибке компиляции для синтаксиса.

Полный код ниже

SELECT dbo_LTS_TRANSACTION_HISTORY.PROD_ORDER, dbo_LTS_TRANSACTION_HISTORY.PART_NUMBER, dbo_LTS_PACKAGE.QUANTITY, dbo_LTS_TRANSACTION_HISTORY.LOCATION, dbo_LTS_TRANSACTION_HISTORY.TRANSCATION_DATE, dbo_LTS_TRANSACTION_HISTORY.CONTAINER_RFIDTAGID, dbo_LTS_TRANSACTION_HISTORY.RFIDTAGID, dbo_LTS_DISCRETE_JOB_SUMMARY.MFG_DELIVERY_DATE, dbo_LTS_DISCRETE_JOB_SUMMARY.EXTENSION_DATE, dbo_LTS_DISCRETE_JOB_SUMMARY.STATUS, dbo_LTS_DISCRETE_JOB_SUMMARY.PBG, dbo_LTS_LOCATION.TYPE

FROM (dbo_LTS_LOCATION 

INNER JOIN (dbo_LTS_DISCRETE_JOB_SUMMARY 
INNER JOIN dbo_LTS_TRANSACTION_HISTORY 
ON (dbo_LTS_DISCRETE_JOB_SUMMARY.[PROD_ORDER] = dbo_LTS_TRANSACTION_HISTORY.[PROD_ORDER]) 

AND (dbo_LTS_DISCRETE_JOB_SUMMARY.[DISCRETE_JOB_NUMBER] = dbo_LTS_TRANSACTION_HISTORY.[JOB_NUMBER])) 
ON dbo_LTS_LOCATION.[DESIGNATION] = dbo_LTS_TRANSACTION_HISTORY.[LOCATION]) 

INNER JOIN dbo_LTS_PACKAGE ON dbo_LTS_TRANSACTION_HISTORY.[RFIDTAGID] = dbo_LTS_PACKAGE.[RFIDTAGID]

INNER JOIN (
    SELECT dbo_LTS_TRANSACTION_HISTORY.[RFIDTAGID], max(dbo_LTS_TRANSACTION_HISTORY.[TRANSCATION_DATE]) as [max_trxn_date]
    FROM dbo_LTS_TRANSACTION_HISTORY
    GROUP BY dbo_LTS_TRANSACTION_HISTORY.[RFIDTAGID]) as b
ON dbo_LTS_TRANSACTION_HISTORY.[RFIDTAGID] = b.[RFIDTAGID] AND (dbo_LTS_TRANSACTION_HISTORY.[TRANSCATION_DATE] = b.[max_trxn_date]))

WHERE (((dbo_LTS_TRANSACTION_HISTORY.PROD_ORDER)="123456"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...