2010-10-04 4 views
2

У меня есть таблица автомобилей:Выбрать самые новые записи из таблицы

Id int, 
Model nvarchar(max), 
DateOfProduction (datetime). 

И данные, такие как:

1 BMW X5 1.1.2010 
2 BMW X5 1.1.2009 
3 BMW X3 1.1.2008 
4 BMW X3 1.1.2007 
5 BMW X7 1.1.2005 

И я хочу, чтобы получить новейшую машину для каждой модели:

1 BMW X5 1.1.2010 
3 BMW X3 1.1.2008 
5 BMW X7 1.1.2005 

I не может справиться с этим:/

Не могли бы вы помочь? e?

+0

Логически говоря, как может быть меньше ID для пе wer модели автомобиля? –

+0

Забавный :) это всего лишь пример :) – user278618

ответ

2

Для вашей данной структуры таблицы, после SQL возвращает то, что вам нужно, но вы могли бы рассмотреть вопрос об изменении структуры таблицы в нечто вроде этого

cars (carid, model) 
production (carid, DateOfProduction) 

SQL Заявление

SELECT c.* 
FROM dbo.Cars c 
     INNER JOIN (
     SELECT Model 
       DateOfProduction = MAX(DateOfProduction) 
     FROM dbo.cars 
     GROUP BY 
       Model 
     ) dm ON dm.DateOfProduction = c.DateOfProduction 
       AND dm.Model = c.Model 
+0

спасибо большое :) – user278618

+0

+1 за умение читать user278618 :-) – InSane

+0

@ InSane, что приходит естественно после 14 лет брака :) –

1
SELECT MIN(Id), Model, MAX(DateOfProduction) FROM Table 
GROUP by Model 

Это будет работать с данными.

Однако, это предполагает, что вы хотите, старейшую Id и новейшую дату для этой модели

Смежные вопросы