Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MAX und Primärschlüssel

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Datrogh, 31 August 2015.

  1. Datrogh

    Datrogh Neuer Benutzer

    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.
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
  3. Datrogh

    Datrogh Neuer Benutzer

    Vielen lieben Dank, das war sehr hilfreich!
    Wenn jetzt noch der Export ordentlich klappen würde ;) Aber das ist ein anderes Thema
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden