有时您可以在查询中使用别名,有时则不能。在您的情况下,以下应该有效(我还将您的 GROUP BY/HAVING 字段清理为更合适的 WHERE 子句):
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)
了解什么时候可以在 Access 查询中使用别名以及什么时候不能使用,这有点玄学。一般来说,如果别名在查询计划中出现的时间比第一次出现的时间晚,则可以使用别名。例如,您可以使用:
SELECT Mid([StockNum],1,9) AS StockTrim, "Trim #:" & StockTrim AS StockTrimNumber
StockTrimNumber 字段在该示例 SELECT 子句中出现在 StockTrim 计算字段之后,可以在其自己的字段定义中使用 StockTrim 计算字段。
在您的情况下,连接发生在计算或返回任何字段之前,因此您需要在 JOIN 子句中重复字段定义。
同样,如果您想根据计算的字段进行过滤,则需要使用字段定义本身(例如,WHERE Mid([StockNum],1,9) LIKE "???XYZ???"
),但单独使用别名会失败(例如,WHERE StockTrim Like "???XYZ???"
)。