2015-11-10 43 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