Domanda

Diciamo che ho una tabella che descrive le auto con marca, modello, anno e alcune altre colonne.

Da questo, vorrei ottenere una riga completa di ogni marca e modello per l'ultimo anno.

O per dirla in un altro modo. Ogni riga avrebbe una combinazione unica di marca e modello con altri dati della riga corrispondente con il valore più grande dell'anno.

La soluzione SQL standard sarebbe eccezionale.

È stato utile?

Soluzione

select t1.make, t1.model, t1.year, t1.other_cols
from table t1
where year = (select max(year) from table t2
              where t2.make = t1.make
              and t2.model = t1.model
             );

Altri suggerimenti

Soluzione MySQL:

SELECT * FROM cars GROUP NY CONCAT(make, "-", model) ORDER BY year DESC;

Questo dovrebbe funzionare quasi ovunque:

SELECT c1.* 
FROM cars c1
INNER JOIN 
  (
     SELECT Make, Model, Max(Year) AS Year
     FROM cars
     GROUP BY Make, Model
  ) c2 ON c1.Make=c2.Make AND c1.Model=c2.Model, c1.Year=c2.Year

L'avvertenza principale è che Anno è spesso una parola riservata (nome della funzione) e i mezzi per sfuggire alle parole riservate variano di platorm. Per risolvere il problema, rinomina la colonna dell'anno in qualcosa come ModelYear.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top