Pregunta

Digamos que tengo una tabla que describe autos con marca, modelo, año y algunas otras columnas.

A partir de eso, me gustaría obtener una fila completa de cada marca y modelo para el último año.

O para ponerlo de otra manera. Cada fila tendría una combinación única de marca y modelo con otros datos de la fila correspondiente con el mayor valor del año.

La solución SQL estándar sería genial.

¿Fue útil?

Solución

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
             );

Otros consejos

solución MySQL:

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

Esto debería funcionar en cualquier lugar:

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

La advertencia principal es que el año es a menudo una palabra reservada (nombre de la función) y los medios para escapar de las palabras reservadas varían según la plataforma. Para solucionarlo, cambie el nombre de la columna del año a algo como ModelYear.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top