Vinzenz Mai: MS SQL - Abfrage, Hilfe

Beitrag lesen

Hallo fanelf,

SELECT t1.Name, MAX(t2.Von), t2.Bis, t2.Tage
FROM tabelle1 t1 JOIN tabelle2 t2 USING(Kennziffer)
GROUP BY t1.Name, t2.Bis, t2.Tage
ORDER BY t1.Name ASC

nein, Iljas Lösung ist richtig :-)
Deine Lösung würde wieder zu mehreren Einträgen je Name führen, was laut Ausgangsposting nicht gewünscht ist.

Die Aufgabenstellung lautet:

Gib mir aus Tabelle 1 den "Namen",
aus Tabelle 2 die Spalten "Von", "Bis" und "Tage",
aber zu jeder "Kennziffer" nur die Zeile mit dem höchsten Wert in der Spalte "Tage". Genau dies liefert der Vorschlag von Ilja, wobei Ilja korrekt hinzugefügt hat, dass es im Falle von doppelten Max-Werten auch wiederum zu doppelten Einträgen kommen kann.

  
SELECT  
  t1.name,  
  t2.von,  
  t2.bis,  
  t2.tage  
FROM tabelle1 AS t1  
INNER JOIN tabelle2 AS t2  
ON t1.kennziffer = t2.kennziffer  
WHERE t2.von = (  
    SELECT MAX(t3.von) FROM tabelle2 AS t3    -- kann bei Gleichheit zu  
    WHERE t2.kennziffer = t3.kennziffer       -- Mehrfacheinträgen führen  
)

Das einzige Problem stellt die Anpassung dieses Statements an die tatsächlich vorhandenen Tabellennamen und ggf. Spaltennamen dar.

Freundliche Grüße

Vinzenz