Intelligentere Abfrage gesucht
Peter Thomassen
- datenbank
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
Hallo Peter,
SELECT number, MAX(level) FROM invoice GROUP BY number
sollte dir dein gewünschtes Ergebnis liefern (ungetestet).
Gruß,
Günther
Hallo Günther,
SELECT number, MAX(level) FROM invoice GROUP BY number
> sollte dir dein gewünschtes Ergebnis liefern (ungetestet).
Tut es. Danke!
Peter