Raggruppa per filtro di riga simile
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.
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.