Tsql从表中获取最新记录

Mic*_*hel 3 sql t-sql

我有这张桌子:

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可能多次出现时,连接将返回多个位置,日期组合的结果.

您可能想要决定如何选择这些结果中的哪一个或您想要返回的所有结果.