Иногда вы можете использовать псевдоним в запросе, иногда нет. В вашем случае, следующий должен работать (я также очистить свой GROUP BY/HAVING поля более подходящего ИНЕКЕ):
SELECT Mid([StockNum],1,9) AS StockTrim
FROM POs LEFT JOIN [STOCK DICTIONARY]
ON Mid(POs.[StockNum],1,9) = [STOCK DICTIONARY].[Stock]
WHERE [STOCK DICTIONARY].Stock Is Null
GROUP BY Mid([StockNum],1,9)
Понимание, когда вы можете использовать псевдоним в запросе доступа и когда вы не можете быть немного темного искусства. Вообще говоря, вы можете использовать псевдоним, если он встречается позже в плане запроса, чем он появляется первым. Например, вы можете использовать:
SELECT Mid([StockNum],1,9) AS StockTrim, "Trim #:" & StockTrim AS StockTrimNumber
Поле StockTrimNumber, которое происходит позже в этом образце ЗЕЬЕСТЕ, чем рассчитанное поле StockTrim, можно использовать вычисленное поле StockTrim в своем собственном определении поля.
В вашей ситуации соединение происходит до того, как какое-либо из полей будет вычислено или возвращено, поэтому вам нужно повторить определение поля в предложении JOIN.
Аналогичным образом, если вы хотите отфильтровать на основе вычисленного поля, вам нужно будет использовать само определение поля (например, WHERE Mid([StockNum],1,9) LIKE "???XYZ???"
), но с использованием только псевдонима не удастся (например, WHERE StockTrim Like "???XYZ???"
).
У меня возникла ошибка синтаксиса: '(отсутствующий оператор) в выражении запроса« Mid ([StockNum], 1,9) Где [СЛОВАРЬ СЛОВА] .Stock Null ". Если я изменяю 'Where' на' Have', я получаю сообщение: 'Вы пытались выполнить запрос, который не включает выражение '[STOCK DICTIONARY] .Stock Is Null' как часть агрегатной функции. ' – Rick
Извините, Я перепутал порядок предложений WHERE и GROUP BY. Я обновил свой ответ. Пожалуйста, попробуйте это и сообщите мне, если это сработает. – mwolfe02