从表中选择最新记录

时间:2010-10-04 10:09:03

标签: sql-server-2005

我有桌车:

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

我无法应付这个:/

你能帮帮我吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

这适用于给定的数据。

但是,它假定您需要最旧的Id和该模型的最新日期