-5

这是我的桌子:

somename   something       somedate
Tom        aaa             2013-07-30 15:16:07.710
Tom        bbb             2013-07-29 15:16:07.710
Matt       ccc             2013-07-28 15:16:07.710
Matt       ddd             2013-07-27 15:16:07.710
Matt       eee             2013-07-27 15:16:07.713

我想返回第 1 行(客户 Tom 最近的)和第 3 行(客户 Matt 的最新)。

更新:我添加了第三列,“某事”

所以结果应该是:

某人 汤
姆马特

某事
aaa
ccc

某个日期
2013-07-30 15:16:07.710
2013-07-28 15:16:07.710

4

4 回答 4

4
SELECT  somename ,
        MAX(somadate)
FROM    attempts
GROUP BY somename

通过按 分组somename,您将有一个名为 Tom 的人的结果,因此该字段必须是唯一的。所以,也许在表中寻找一个唯一的字段,也许UserName等等Email。所以,你最终会得到:

SELECT  somename ,
        MAX(somadate) ,
        UniqueField
FROM    attempts
GROUP BY somename ,
        UniqueField
于 2013-07-30T20:38:38.050 回答
3

由于您使用的是 SQL Server,因此您可以使用row_number()来获取结果:

select somename, somedate
from
(
  select somename, somedate,
    row_number() over(partition by somename
                      order by somedate desc) seq
  from yourtable
) d
where seq = 1;

演示

于 2013-07-30T20:38:27.557 回答
3

干得好

select somename, max(somedate) from sometable group by somename
于 2013-07-30T20:37:33.153 回答
1
CREATE TABLE SomeTable(
  SomeName VARCHAR(5),
  SomeDate DATE
 )

INSERT INTO SomeTable
VALUES ('Tom','2013-07-01')
  , ('Tom','2013-06-30')
  , ('Bob','2013-07-01')
  , ('Bob','2013-06-30')
  , ('Bob','2013-06-29')

SELECT DISTINCT SomeName, MAX(SomeDate)
FROM SomeTable
GROUP BY SomeName

SQLFiddle

于 2013-07-30T20:41:27.057 回答