2015-11-10 40 views
0

我想在MS Access中创建一个子查询,其中having子句比较当前记录上的一个值。我单独创建了这些查询,但我很难将它们结合起来。访问:比较子查询中的当前字段值

我有以下查询,这是一个采购订单列表(POsFullDetail),并应表现出给定的股票数(Stockum)采购订单之日起的第一次出现:

SELECT POsFullDetail.PO, POsFullDetail.OrderDate, POsFullDetail.StockNum, 


(SELECT First(POsFullDetail.OrderDate) AS FirstOfOrderDate 
FROM POsFullDetail 
GROUP BY POsFullDetail.StockNum 
HAVING POsFullDetail.StockNum = POsFullDetail.StockNum.Value 
ORDER BY First(POsFullDetail.OrderDate) 

) AS First_Date 


FROM POsFullDetail; 

的声明我正在尝试使用的是POsFullDetail.StockNum.Value 它的设置方式是要求一个值。当我创建子查询时,我直接输入了股票编号。

回答

1

子查询为您提供每个stocknum的第一个订单日期。

当使用它作为一个子查询,你不再有兴趣在第一订单日期 stocknum,但在第一顺序日期 stocknum。

SELECT POsFullDetail.PO, POsFullDetail.OrderDate, POsFullDetail.StockNum, 
    (
    SELECT First(SameStockNum.OrderDate) AS FirstOfOrderDate 
    FROM POsFullDetail AS SameStockNum 
    WHERE SameStockNum.StockNum = POsFullDetail.StockNum 
) AS First_Date 
FROM POsFullDetail; 

如您所见,您必须使用表别名,以便您可以将表链接到自身。虽然使用同一张桌子,但您可以将其称为一次POsFullDetail和一次SameStockNum,这使您可以链接SameStockNum.StockNum = POsFullDetail.StockNum