MAX und Primärschlüssel

Datrogh

Neuer Benutzer
Beiträge
2
Hallo zusammen!
Ich bin mir sicher, dass mir hier geholfen werden kann. Ich bin leider kompletter Neuling und habe eine Aufgabe vor mir liegen, die mir Kopfzerbrechen bereitet und für erfahrene MSSQL-User vermutlich ein Klacks ist...

Das Problem:
Ich habe eine Tabelle dbo.Auftraege mit den Spalten
Oid - Kundennummer - Auftragszeitpunkt - Ort - Einheit

Die Oid ist der Primärschlüssel. Mein Ziel ist es nun, für jede Kundennummer den neuesten Auftrag herauszufinden und die Inhalte der anderen Spalten zu erhalten (vor allem die Oid ist wichtig, um unabhängige, weitere Verknüpfungen machen zu können). Es gibt keine Relation zwischen Primärschlüssel und Auftragszeitpunkt, der höchste Primärschlüssel ist nicht gleich neuester Auftrag...
Anders formuliert: ich brauche ein MAX(Auftragszeitpunkt), GROUP BY Kundennummer, bei dem die drei anderen Spalten korrekt befüllt sind. Diese Abfrage geht natürlich nicht, weil ich bei einer Aggregatsfunktion keine "sonstigen" Spalten mit hinzunehmen kann.
Gibt es also eine Möglichkeit (am Besten als View), das Ergebnis quasi Gruppiert nach Kundennummer darzustellen? Eine Verknüpfung von mehreren Sichten oder Unterabfragen wären kein Problem, Performance ist glücklicherweise kein Faktor.
 
Werbung:
Code:
SELECT    a.Oid,
        t.Kundennummer,
        t.Auftragszeitpunkt,
        a.Ort,
        a.Einheit
FROM    (

SELECT    Kundennummer,
        max(Auftragszeitpunkt) AS Auftragszeitpunkt
FROM    dbo.Auftraege
GROUP BY Kundennummer

        ) t
LEFT JOIN dbo.Auftraege a
ON        t.Kundennummer = a.Kundennummer
AND        t.Auftragszeitpunkt = a.Auftragszeitpunkt
Wobei du jetzt natürlich mehrere Einträge pro Kundennummer bekommen kannst wenn mehrere Datensätze den gleichen Auftragszeitpunkt haben.
 
Werbung:
Vielen lieben Dank, das war sehr hilfreich!
Wenn jetzt noch der Export ordentlich klappen würde ;) Aber das ist ein anderes Thema
 
Zurück
Oben