Sql server 2005 从表中选择最新记录

Sql server 2005 从表中选择最新记录,sql-server-2005,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 我无法应付这种情况:/ 你能帮

我有餐车:

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
我无法应付这种情况:/

你能帮我吗

SELECT MIN(Id), Model, MAX(DateOfProduction) FROM Table
GROUP by Model
这将适用于给定的数据


但是,假设您需要给定的表结构的最老的ID和最新的模型

,在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

从逻辑上讲,新车型的ID怎么可能更小?有趣:)这是唯一的例子:)