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