Veröffentlicht 29. Februar 201213 j Hallo, ich habe zur Zeit irgendwie eine Denkblockade und hoffe jemand kann mir helfen. Ich muss gerade eine SQL-Abfrage bauen, in der ich aus einer Vielzahl von Kundeneinträgen den neuesten Eintrag ermittlen muss. In der Tabelle sind jedoch verschiedene Einträge zum gleichen Kunden als auch zu anderen Kunden enthalten. Bsp.: Kundennummer...Artikel...........Kaufdatum AA...................Dose.............01.01.2012 AA...................Bratpfanne.....02.01.2012 AA...................Bratpfanne.....03.01.2012 BB...................Apfel.............01.01.2012 BB...................Birne.............05.01.2012 BB...................Trauben.........03.01.2012 CC...................Kühlschrank....06.01.2012 Die erwartete Ergebnismenge wäre: Kundennummer...Artikel...........Kaufdatum AA...................Bratpfanne.....03.01.2012 BB...................Birne.............05.01.2012 CC...................Kühlschrank....06.01.2012 Habt ihr eine Idee wie ich das bewerkstellige? Ich schaffe es nicht nur einzelne Einträge zu erhalten sondern bekomme immer 1+x Ich muss im übrigen SQL für Oracle DB nutzen. Grüße, Solaris
29. Februar 201213 j Hi, ich würd mit einer Unterabfrage das höchste Datum raussuchen. Habs nicht getestet. Du musst noch Tabelle mit deinem Tabellennamen ersetzen. Select kundennummer, Artikel, Kaufdatum From Tabelle A Where A.Kaufdatum = ( Select max(B.datum) From Tabelle B Where A.kundennummer = B.Kundenummer) Bearbeitet 29. Februar 201213 j von socket
29. Februar 201213 j Hallo, wenn dein Kaufdatum wirklich nur ein Datum ohne Zeitstempel ist, dann kann deine erwartete Ergebnismenge so nicht sein, denn dann ist der Artikel des neuesten Eintrags nicht eindeutig bestimmbar. Das passiert genau dann wenn ein Kunde an einem Tag mehrere Artikel kauft. Wenn du auf den Artikel verzichten kannst, dann gehts mit "select max(Kaufdatum) from table group by kundennummer;". Gruß Martin
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.