在 MS Access 中,我有 DateList 表,它保存不同訂單的到期日。因此,該表有兩列:OrderNo 和 DueDate。對于某些訂單號,可能有多個 DueDate。該表可能如下所示:
OrderNo DueDate
100 12/9/2021
101 20/9/2021
102 30/9/2021
100 7/10/2021
102 11/10/2021
103 15/10/2021
…
我的目標是撰寫一個查詢來獲取每個 OrderNr 的最新 DueDate。
我創建了兩個查詢;第一個qry1生成一個沒有重復的 OrdNo 串列:
SELECT
DateList.OrderNo AS UniqOrderNo
FROM DateList
GROUPBY DateList.OrderNo;
在第二個查詢qry2 中,我使用了 DMax 函式來搜索每個訂單的 DueDates 以獲得最大值。
SELECT
qry1.UniqOrderNo
,DMax("[DueDate]","[DateList]","[OrderNo]='[qry1]![UniqOrderNo]'") AS LatDuDate
FROM qry1
INNER JOIN DateList
ON qry1.UniqOrderNo = DateList.OrderNo;
LatDuDate 表示訂單的最新截止日期。
不幸的是,該查詢不起作用并且不回傳任何內容。
現在我的問題:
我的方法/查詢有問題嗎?
在 MS Access 中是否有更好的方法來完成此任務?
uj5u.com熱心網友回復:
你幾乎自己想通了。Max 為您回傳該組的最大價值。
SELECT Max(DueDate) DueDate, OrderNo
FROM DateList
GROUP BY OrderNo
uj5u.com熱心網友回復:
類似于 Christian 的回答,但由于OrderNo是唯一的 id,您可以簡單地選擇First()而不是分組 - 它表現更好。**
當然,這取決于表中保存的記錄數。
SELECT First(OrderNo) AS OrderNo, Max(DueDate) AS DueDate
FROM DateList;
** 來源:Allen Browne - 優化查詢
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314236.html
上一篇:我正在嘗試將一個簡單的查詢插入到Microsoft資料庫中,并且我正在使用UCanAccess
下一篇:某些用戶的空白表格
