2016-07-19 66 views
0

我有一個訪問數據庫,爲此我試圖確定查詢中最新的結果。我想知道最近的任何項目貸款是否完成。例如在查詢中查找最新結果 - ms訪問

tbl_Loans

LoanID Equipment Number Start Date Return Date Expr:IsOnLoan 
123  78457    16/05/2001 19/06/2003 Loan Complete 
124  79557    17/07/2016    Loan in Progress 
125  78457    03/06/2016    Loan in Progress 
126  79630    01/01/2015 01/01/2016 Loan Complete 
127  79360    02/03/2016    Loan in Progress 
128  78457    01/01/2016 01/03/2016 Loan Complete 

其中表達式是:IsOnLoan是IIF:

IsOnLoan: IIf([Loans]![Return Date] Is Null,"Loan Active","Loan Complete") 

我想在查詢(可能是一個獨立的返回最新的結果在另一列中的每個設備數量查詢)即

Loan ID Equipment Number Start Date Return Date Expr:IsOnLoan 
125  78457    03/06/2016    Loan in Progress 
127  79360    02/03/2016    Loan in Progress 
128  78457    01/01/2016 01/03/2016 Loan Complete 

微軟的支持頁面會讓我使用「頂」,但其他我見過使用內部連接,但我無法讓他們中的任何一個人工作。

任何幫助,不勝感激

感謝

來處理這個

回答

0

的一種方法是使用一個INNER JOINtbl_Loans表,其中列出了每個設備數量最近日期的子查詢之間。

SELECT t1.LoanID, 
     t1.[Equipment Number], 
     t1.[Start Date], 
     t1.[Return Date], 
     t1.[Expr:IsOnLoan] 
FROM tbl_Loans AS t1 
INNER JOIN 
(
    SELECT [Equipment Number], MAX([Start Date]) AS [Start Date] 
    FROM tbl_Loans 
    GROUP BY [Equipment Number] 
) AS t2 
    ON t1.[Equipment Number] = t2.[Equipment Number] AND 
     t1.[Start Date] = t2.[Start Date] 
+0

感謝您的幫助。過去幾天我一直在嘗試使用這個功能,但似乎無法使其發揮作用。我遇到了一些錯誤:第一個是由查詢定義的選擇列表中的別名'開始日期'引起的循環引用。我試圖通過將'AS [開始日期]更改爲MaxStart來改變這一點。但是,然後我得到一個錯誤'你已經寫了一個子查詢,可以返回多個字段,而不使用主查詢FROM子句中的EXISTS保留字。修改子查詢的select語句以僅返回一個結果。對於如何解決這個問題,我有點無知。 – TerrorPenguin

+0

有什麼錯誤? –

+0

對不起,在進入後正在編輯帖子!要清除新代碼現在是'Expr1:(SELECT t1.LoanID,t1。[Equipment Number],t1。[Start Date],t1。[Return Date],t1。[Expr:IsOnLoan] FROM tbl_Loans AS t1 INNER JOIN (設備號碼),MAX([開始日期])AS [MaxStart] FROM tbl_Loans GROUP BY [設備編號])AS t2 ON t1。[設備編號] = t2。[設備編號] AND t1。[開始日期] = t2。[MaxStart])抱歉格式化 – TerrorPenguin