2016-07-19 8 views
0

Ich habe eine Access-Datenbank, für die ich versuche, das neueste Ergebnis in einer Abfrage zu ermitteln. Ich möchte wissen, ob das letzte Darlehen für einen Gegenstand abgeschlossen ist oder nicht. z.B.Finde das neueste Ergebnis in der Abfrage - ms Zugriff

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 

Wo Expr:

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

ich das jüngste Ergebnis für jede Gerätenummer in einer anderen Spalte in einer Abfrage (wahrscheinlich eine separate zurückkehren möchten: IsOnLoan ein IIF ist Query) dh

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 

Microsoft Support-Seiten hätte ich ein "Top" aber andere verwenden s Ich habe gesehen, dass ein innerer Join verwendet wurde und ich kann keinen von beiden zur Arbeit bringen.

Jede Hilfe sehr geschätzt

Dank

Antwort

0

Eine Möglichkeit, dies zu handhaben ist ein INNER JOIN zwischen tbl_Loans Tabelle zu verwenden und einer Unterabfrage, die die letzten Tage, für jede Gerätenummer identifiziert.

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

Danke für Ihre Hilfe. Ich habe versucht, dies in den letzten paar Tagen zu benutzen, und ich kann es nicht zur Arbeit bringen. Ich bekomme ein paar Fehler: Der erste war 'zirkuläre Referenz verursacht durch Alias' Startdatum 'in der Auswahlliste der Abfragedefinition. Ich habe versucht, dies zu ändern, indem ich 'AS [Start Date] zu MaxStart änderte. Dann bekomme ich einen Fehler 'Sie haben eine Unterabfrage geschrieben, die mehr als ein Feld zurückgeben kann, ohne EXISTS reserviertes Wort in der FROM-Klausel der Hauptabfrage zu verwenden. Überarbeiten Sie die SELECT-Anweisung der Unterabfrage, um nur ein Ergebnis zurückzugeben. Ich bin ein bisschen ratlos, wie das gelöst werden kann. – TerrorPenguin

+0

Was sind die Fehler? –

+0

Sorry, war Bearbeitung Post nach dem Betreten! Um klar zu sein, ist neuer Code jetzt 'Ausdr1: (SELECT t1.LoanID, t1. [Ausstattungsnummer], t1. [Startdatum], t1. [Rückkehrdatum], t1. [Ausdr: IsOnLoan] FROM tbl_Loans AS t1 INNERER JOIN (SELECT [Gerätenummer], MAX ([Startdatum]) AS [MaxStart] FROM tbl_Loans GROUP BY [Gerätenummer]) AS t2 EIN t1. [Gerätenummer] = t2. [Gerätenummer] AND t1. [Startdatum] = t2. [MaxStart]) Entschuldigung für die Formatierung – TerrorPenguin

Verwandte Themen