2017-06-06 103 views
1

我在寫一個查詢,並且無法按照我的意願過濾數據。在表中,有一個日期字段和一個ItemCode字段。我希望每個ItemCode返回一個記錄,其中最早的日期是今天之後。今天日期之後的SQL最小日期值現在()

如果今天是2017年6月6日,我的數據是這樣的:

ItemCode  Date 
1   6/1/2017 
1   6/7/2017 
1   6/10/2017 
2   6/2/2017 
2   6/8/2017 
2   6/15/2017 

我希望得到的結果是

ItemCode  Date 
1   6/7/2017 
2   6/8/2017 

我的查詢到目前爲止是:

SELECT PO_PurchaseOrderDetail.ItemCode, Min(PO_PurchaseOrderDetail.RequiredDate) AS NextPO 
FROM PO_PurchaseOrderDetail 
GROUP BY PO_PurchaseOrderDetail.ItemCode 
HAVING (((Min(PO_PurchaseOrderDetail.RequiredDate))>=Now())); 

問題在於Min函數先觸發並抓取每個ItemCode的最早日期,這是今天之前的日期。然後計算> = Now(),並且由於最短日期在今天之前,所以查詢不會返回任何內容。

我試過在查詢的HAVING部分的min函數中放入> = Now(),但它不會改變結果。

我的結構是錯誤的,我將不勝感激任何建議。謝謝!

回答

1

我將接近這樣的標準SQL,訪問方式可能會有所不同

select PO_PurchaseOrderDetail.ItemCode, 
     min(PO_PurchaseOrderDetail.RequiredDate) as NextPO 

from PO_PurchaseOrderDetail 
where PO_PurchaseOrderDetail.RequiredDate >= Now() 
group by PO_PurchaseOrderDetail.ItemCode; 
+0

完美。此外,它在Access中工作得很好。謝謝! –

1

把日期條件的where條款(不having條款)中:

select ItemCode, min(Date) as NextPO 
from PO_PurchaseOrderDetail 
where Date > '6/6/2017' 
group by ItemCode 
+0

這個和JohnHC的答案都很好。謝謝! –