访问:比较子查询

时间:2015-11-10 19:45:57

标签: sql ms-access

我正在尝试在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 个答案:

答案 0 :(得分:1)

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

将其用作子查询时,您不再对第一个订单日期 per 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进行链接。