Peter Thomassen: Intelligentere Abfrage gesucht

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

  1. Hallo Peter,

      
    SELECT number, MAX(level) FROM invoice GROUP BY number  
    
    

    sollte dir dein gewünschtes Ergebnis liefern (ungetestet).

    Gruß,
    Günther

    1. Hallo Günther,

      SELECT number, MAX(level) FROM invoice GROUP BY number

      
      > sollte dir dein gewünschtes Ergebnis liefern (ungetestet).  
        
      Tut es. Danke!  
        
      Peter