Announcement

Collapse
No announcement yet.

jeweils den ersten wert aus einer Gruppe ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • jeweils den ersten wert aus einer Gruppe ermitteln

    Moin,
    ich habe eine Tabelle, in der die Aus- und Rückgabe von Fahrzeugen gespeichert wird:
    Tabelle Vermietungen
    LfdNr : Autoincrement
    Fahrzeug: Integer
    Mieter: Integer
    AusDat : Varchar(8)
    RueckDat : Varchar(8)

    Datensätze können nun z.B. sein:
    <pre>
    LfdNr|Fahrzeug|Mieter|AusDat |RueckDat
    1 | 2 | 5 |20050101|20050110
    2 | 3 | 6 |20050103|20050115
    3 | 3 | 3 |20050118|
    4 | 2 | 5 |20050201|
    </pre>
    Ich brauche nun eine Abfrage, die mir für jedes Fahrzeug den 'ersten' Datensatz liefert.
    z.B. Datum =20050213 soll liefern:
    <pre>
    LfdNr|Fahrzeug|Mieter|AusDat |RueckDat
    3 | 3 | 3 |20050118|
    4 | 2 | 5 |20050201|
    </pre>
    Datum=20050120 soll liefern:
    <pre>
    1 | 2 | 5 |20050101|20050110
    3 | 3 | 3 |20050118|
    </pre>

    ich brauche also so etwas wie
    <pre>
    select * from Vermietungen where AusDat <=atum
    Group by Fahrzeug
    order by Ausdat DESC
    </pre>
    wobei ich aber jeweils nur den ersten wert pro Fahrzeug brauche.
    Geht dies überhaupt in einem Rutsch per SQL, oder muss ich das Ergebnis der obigen Abfrage manuell durchgehen und mir die gewünschten Sätze ermitteln?
    (D7, ADO, MS-Access-DB)

    Gruss Marcus

  • #2
    select A.* from Vermietungen as A
    where A.AUSDAT in (
    select max(I.AUSDAT) from Vermietungen as I where I.FAHRZEUG = A.FAHRZEUG);

    oder

    select A.FAHRZEUG, max(A.AUSDAT) from Vermietungen as A
    group by A.Fahrzeu

    Comment

    Working...
    X