我有这张桌子:
Location date temp
1 12-12-2009 19
1 14-12-2009 21
1 13-12-2009 17
2 12-12-2009 18
2 14-12-2009 16
2 18-12-2009 12
2 15-12-2009 14
Run Code Online (Sandbox Code Playgroud)
现在我想为所有位置选择最新的(最新日期)行,所以他的示例第2行和第7行.我该怎么做?
我可以选择最新的1个位置,前1个日期为一个位置,我尝试按位置分组,日期,但后来我想念温度....
亲切的问候,米歇尔
Adr*_*der 11
看看这个
DECLARE @Table TABLE(
Location INT,
Date DATETIME,
Temp INT
)
INSERT INTO @Table (Location,Date,Temp) SELECT 1, '12 Dec 2009', 19
INSERT INTO @Table (Location,Date,Temp) SELECT 1, '14 Dec 2009', 21
INSERT INTO @Table (Location,Date,Temp) SELECT 1, '13 Dec 2009', 17
INSERT INTO @Table (Location,Date,Temp) SELECT 2, '12 Dec 2009', 18
INSERT INTO @Table (Location,Date,Temp) SELECT 2, '14 Dec 2009', 16
INSERT INTO @Table (Location,Date,Temp) SELECT 2, '18 Dec 2009', 12
INSERT INTO @Table (Location,Date,Temp) SELECT 2, '15 Dec 2009', 14
SELECT t.*
FROM @Table t INNER JOIN
(
SELECT Location,
MAX(Date) MaxDate
FROM @Table
GROUP BY Location
) MaxDates ON t.Location = MaxDates.Location
AND t.Date = MaxDates.MaxDate
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)
您可能需要注意的唯一事情是,当给定位置的maxdat可能多次出现时,连接将返回多个位置,日期组合的结果.
您可能想要决定如何选择这些结果中的哪一个或您想要返回的所有结果.