SQL Abfrage mit Unterbedingung für Zeilenauswahl
-
Hi,
ich hab folgendes Problem: in meiner SQL-Tabelle stehen zahlreiche Einträge mit den Spalten A - Z.
Jetzt möchte ich einen Query erstellen, der mir alle Einträge meiner Tabelle liefert. Wenn aber der Wert von A mehrmals vorkommt, möchte ich nur den Eintrag haben, bei dem der Wert von Z am größten ist.
Hab schon ein bissl probiert und gegooglet, aber komm nicht weiter...Update:
Eine Möglichkeit hab ich gefunden:SELECT TblA.* FROM TblA RIGHT JOIN (SELECT A, MAX(Z) AS 'Z' FROM TblA GROUP BY A) TblB ON (TblA.A = TblB.A OR (TblA.A IS NULL AND TblB.A IS NULL)) AND (TblA.Z = TblB.Z OR (TblA.Z IS NULL AND TblB.Z IS NULL))
Aber geht das noch eleganter? Die Gruppierung erfolgt nämlich mit 4 Spalten, das ist ne ganz schöne schreiberei...
-
SELECT * FROM tblA a1 WHERE Z = (SELECT MAX(Z) FROM tblA a2 WHERE a1.A = a2.A)
-
Nene, das Maximum von Z ist bei allen As unterschiedlich.
-
dochdoch. Dann schau mal genau hin. Das MAX(Z) wird für jedes a1.A ermittelt. "Correlated subquery" nennt sich das.
-
Ah, das Problem könnte dabei sein, dass ich das Z-Feld erst bei einem Probanden gefüllt hab, bei den anderen steht dort NULL drin und deshalb trifft die Bedingung nicht....