Peter Thomassen: Intelligentere Abfrage gesucht

Beitrag lesen

Hallo liebes Forum,

mein Abrechnungssystem enthält eine Rechnungstabelle namens invoice mit den Spalten number und level. level gibt den "Rechnungsgrad" an; 0 ist Rechnung, 1 die erste Mahnung und so weiter. Eine gemahnte Rechnung steht also zweimal drin, einmal mit level = 0 und einmal mit level = 1.

Nun möchte ich für jede Rechnung ihren höchsten Grad ermitteln, quasi

SELECT number, MAX(level) FROM invoice

, allerdings mit der Einschränkung, dass MAX() sich nicht auf die ganze Tabelle, sondern nur auf Datensätze mit demselben number-Wert beziehen soll. Ich bin nun zu Folgendem gekommen:

SELECT DISTINCT number, (SELECT MAX(level) FROM invoice WHERE number = a.number) AS level FROM invoice AS a

Damit funktioniert's, allerdings erscheint es mir etwas unelegant, hierfür ein Subselect und einen Alias zu verschwenden. Geht das irgendwie kompakter? Ich verwende MySQL 5.0.30.

Vielen Dank!
Peter