我有桌车:
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
我无法应付这个:/
你能帮帮我吗?
答案 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和该模型的最新日期