tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Mel_One
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
1294
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    PeterE PeterE ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    12
    Hallo Forum,

    ich benötige einen Tip zu TSQL. Folgendes Problem:

    Select Kundenname, Datum, KZ1, KZ2
    from Kundentabelle
    order by Kundenname, Datum

    ERGEBNIS:
    Braun, 20091101, A, X
    Braun, 20091202, A, B
    Schmitz, 20090315, B, C
    Schmitz, 20090502, A, F
    Schmitz, 20090502, A, X
    Schmitz, 20090502, A, Y
    .
    .
    .

    Wie muss das SQL-Statement aussehen damit ich nur einen der jüngsten Einträge eines Kunden bekomme unabhängig davon womit die Spalten KZ1 und KZ2 gefüllt sind.

    SOLLERGEBNIS
    Braun, 20091202, A, B
    Schmitz, 20090502, A, Y
    .
    .
    .

    Wobei, welcher der 3 Datumsgleichen 'Schmitz' - Datensätze aus dem Beispiel im Ergebnis erscheint ist unerheblich, wichtig ist das nur einer erscheint.

    Wäre für nen Tip dankbar.

    PeterE
    Geändert von PeterE (02.03.10 um 09:51 Uhr)
     

  2. #2
    Mel_One Mel_One ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Ort
    Zürich (Zürich)
    Beiträge
    167
    Versuchs mal mit
    Code :
    1
    
    Select TOP(1) Kundennr, Datum, KZ1, KZ2 from Kundentabelle order by Datum DESC
    PeterE bedankt sich. 
    "Wenn Sie mich suchen, ich halte mich in der Nähe des Wahnsinns auf, genauer gesagt auf der schmalen Linie zwischen Wahnsinn und Panik, gleich um die Ecke von Todesangst, nicht weit weg von Irrwitz und Idiotie!"
    -- Bernd das Brot

  3. #3
    Avatar von Artorius
    Artorius Artorius ist offline Mitglied Plutonium
    Registriert seit
    Feb 2010
    Beiträge
    222
    Moin!
    Beispielsweise so (sofern Kundennr den Datensatz eindeutig identifziert):
    Code :
    1
    2
    
    Select a.Kundennr, a.Datum, a.KZ1, a.KZ2 from Kundentabelle a where a.Datum = 
    (select max(b.Datum) from Kundentabelle b where a.Kundennr = b.Kundennr)order by Kundennr, Datum

    Grüße!
     

  4. #4
    PeterE PeterE ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    12
    Zitat Zitat von Mel_One Beitrag anzeigen
    Versuchs mal mit
    Code :
    1
    
    Select TOP(1) Kundennr, Datum, KZ1, KZ2 from Kundentabelle order by Datum DESC
    Hallo Mel_One, so bekomme ich leider nur das jüngste Datum raus. Ich möchte aber je Kunde einen Datensatz
     

  5. #5
    PeterE PeterE ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    12
    Zitat Zitat von Artorius Beitrag anzeigen
    Moin!
    Beispielsweise so (sofern Kundennr den Datensatz eindeutig identifziert):
    Code :
    1
    2
    
    Select a.Kundennr, a.Datum, a.KZ1, a.KZ2 from Kundentabelle a where a.Datum = 
    (select max(b.Datum) from Kundentabelle b where a.Kundennr = b.Kundennr)order by Kundennr, Datum

    Grüße!
    Hallo Artorius, die Kundennummer identifiziert den Datensatz nicht eindeutig (in meinem Beispiel 'Braun' und 'Schmitz' - ich weiss blöde Kundennummern) - zu jedem Kunden gibt es mehere Datensätze mit unterschiedlichem Datum und Einträgen in den Spalten KZ1 und KZ2
     

  6. #6
    Avatar von Artorius
    Artorius Artorius ist offline Mitglied Plutonium
    Registriert seit
    Feb 2010
    Beiträge
    222
    Ah sorry,
    war ein bisschen falsch formuliert meinerseits. Nochmal neu gesagt, wenn du nur den neusten Eintrag eines eines Kunden haben möchtest, dann sollte mein Beispiel schon passen..

    Grüße!
     

  7. #7
    PeterE PeterE ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    12
    Habe das Beispiel nochmal angepasst. Leider gibt es auch Datensätze mit gleichem Datum je Kunde ist mir vorher nicht aufgefallen. Sorry
     

  8. #8
    Avatar von Artorius
    Artorius Artorius ist offline Mitglied Plutonium
    Registriert seit
    Feb 2010
    Beiträge
    222
    So,
    was besseres fehlt mir nun auch gerade nicht ein:
    Code :
    1
    2
    
    Select a.Kundennr, a.Datum from Kundentabelle a where a.Datum = 
    (select max(b.Datum) from Kundentabelle b where a.Kundennr = b.Kundennr) group by a.Kundennr, a.Datum order by Kundennr, Datum

    Grüße!
     

  9. #9
    PeterE PeterE ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    12
    Danke erstmal für die schnelle Hilfe.

    Das Beispiel funktioniert solang ich nicht die Spalten KZ1 und KZ2 hinzunehme, dann bekomm ich wieder zu jedem unterschiedlichem Eintrag in KZ1 und KZ2 einen Datensatz (3 x 'Schmitz')

    Gruß
     

  10. #10
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    schau mal hier:
    Code sql:
    1
    2
    3
    4
    
     SELECT a.*
        FROM Kundentabelle a LEFT JOIN Kundentabelle b 
        ON a.kundenname = b.kundenname AND a.datum < b.datum 
        WHERE b.datum IS NULL;

    siehe auch:
    http://www.tutorials.de/forum/relati...arstellen.html
    für Schmitz gibt es aber keinen eindeutigen neuesten Wert (oder ist das für dich der letzte eingefügte Wert nach der natürlichen Ordnung in der Tabelle?)

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  11. #11
    PeterE PeterE ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    12
    Hallo Tom,

    Dank für die Antwort. Dein Beispiel kannte ich schon. Habe es mal umgesetzt, Das Ergebnis

    Braun 20091202 A B
    Schmitz 20090502 A F
    Schmitz 20090502 A X
    Schmitz 20090502 A Y

    Es wäre aber wichtig das nur ein Schmitz erscheint, welcher ist egal, die anderen Informationen sind zweitrangig müssen aber trotzdem mitgeführt werden.

    Gruß
     

Ähnliche Themen

  1. Letzten Wert aus einer Gruppe (group by) auslesen
    Von incubus77 im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 10.12.09, 15:34
  2. Letzten Eintrag in einer Gruppe anzeigen (GROUP BY)
    Von exxe im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 30.03.06, 18:14
  3. Letzten Datensatz auslesen
    Von Hektik im Forum PHP
    Antworten: 2
    Letzter Beitrag: 19.02.06, 23:19
  4. Antworten: 2
    Letzter Beitrag: 03.05.05, 10:23
  5. Zugriff auf den letzten Datensatz einer Tabelle
    Von Maximus im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 02.08.01, 09:46