我无法将查询表达式传递给WHERE子句。 Access不会获取新列(表达式)名称,并提示我输入整个值。简化的查询如下。
您会注意到WHERE子句的第二部分包含[Offset]列名,这就是导致我出现问题的原因。结果应检查DateAdd / Offset值(DATE)是否在另一个表中存在的值之前。关于如何处理这个问题的任何想法?谢谢!
SELECT po.Item,
ist.SKU,
po.[EX-FACTORY DATE],
Min(lt.Intransit_LT) AS LT,
DateAdd('d',[LT],po.[EX-FACTORY DATE]) AS Offset
FROM (((tbl_Item_PO AS po
LEFT JOIN tbl_ItemSKUType AS ist ON po.item = ist.Item)
LEFT JOIN Supplier_and_LT AS lt ON po.Supplier = lt.Supplier
WHERE (((ist.SKU) Is Not Null)
AND ([Offset]<(select top 1 AOD from tbl_Date)))
GROUP BY po.Item, ist.SKU, po.[EX-FACTORY DATE], po.[QTY PER SHIPMENT], po.WHSE, wh.Region, po.Ship_Method;
编辑:我试图明确地放入表达式但是我被提示输入[LT]的值。似乎Access不识别除源表中的列名称之外的列名称
编辑:HAVING现在给我一个数据类型不匹配的查询表达式错误。正如我所做的那样:
SELECT po.Item,
ist.SKU,
po.[EX-FACTORY DATE],
Min(lt.Intransit_LT) AS LT,
po.Ship_Method
FROM (((tbl_Item_PO AS po
LEFT JOIN tbl_ItemSKUType AS ist ON po.item = ist.Item)
LEFT JOIN Supplier_and_LT AS lt ON po.Supplier = lt.Supplier
WHERE (((ist.SKU) Is Not Null)
GROUP BY po.Item, ist.SKU, po.[EX-FACTORY DATE], po.[QTY PER SHIPMENT], po.WHSE, wh.Region, po.Ship_Method
HAVING (DateAdd('d',MIN(lt.[Intransit_LT]),po.[EX-FACTORY DATE]))<(select top 1 AOD from tbl_Date)
答案 0 :(得分:1)
您的Offset
包括LT
,LT
包含Min
聚合表达式。聚合表达式不能在WHERE
子句中使用,只能在HAVING
子句中使用。
尝试以下方法:
SELECT po.Item,
ist.SKU,
po.[EX-FACTORY DATE],
Min(lt.Intransit_LT) AS LT,
DateAdd('d',[LT],po.[EX-FACTORY DATE]) AS Offset
FROM (tbl_Item_PO AS po
LEFT JOIN tbl_ItemSKUType AS ist ON po.item = ist.Item)
LEFT JOIN Supplier_and_LT AS lt ON po.Supplier = lt.Supplier
WHERE (ist.SKU Is Not Null)
GROUP BY po.Item, ist.SKU, po.[EX-FACTORY DATE], po.[QTY PER SHIPMENT], po.WHSE, wh.Region, po.Ship_Method
HAVING DateAdd('d',Min(lt.Intransit_LT),po.[EX-FACTORY DATE])<(select top 1 AOD from tbl_Date))
答案 1 :(得分:0)
尝试使用:
DateAdd('d',Min(lt.Intransit_LT),po.[EX-FACTORY DATE]) AS [Offset]
...
WHERE ((ist.SKU Is Not Null)
AND DateAdd('d',Min(lt.Intransit_LT),po.[EX-FACTORY DATE])<(select top 1 AOD from tbl_Date))