SQL Group按日期只选择1条记录

时间:2013-05-14 23:58:12

标签: sql sql-server

我试图只返回下表中的一条记录但不起作用。它返回多个记录。请指教,谢谢

我怀疑groupby的问题

CreateDate              Firstname EventID 
2013-05-13 18:11:35.187 Jack    0CD7B08A-0EAF-4515-9DE1-00FC6DB29A61
2013-05-13 18:11:35.310 Paul    16A584D5-E9B7-4617-8DC9-089C628E0ED5
2013-05-13 20:14:33.863 Craig   AAA21035-1377-443D-9BEE-0C0761534803

以下是上述结果的SQL查询:

 SELECT MAX (CreateDate) AS Create_Date, Firstname ,EventID
    FROM SessionsEvents
    WHERE TRN='0391588'

GROUP BY Firstname , TRN, EventID

3 个答案:

答案 0 :(得分:1)

使用TRN后的FirstName的Group数据,之后使用EventID表示查询中存在TRN,并且在所有结果集和FirstName中相同,EventID列没有相同的数据用于分组,行在resultset中是分开的,如果你需要最大创建日期,您应该使用SQL Server的TOP关键字:

SELECT TOP 1 MAX (CreateDate) AS Create_Date, Firstname ,EventID
FROM SessionsEvents
WHERE TRN='0391588'
GROUP BY Firstname , TRN, EventID

答案 1 :(得分:1)

你不想要GROUP BY。您想要 TOP 1 ORDER BY 来获取CreateDate的最新记录。

SELECT TOP 1 CreateDate, Firstname ,EventID
FROM SessionsEvents
WHERE TRN='0391588'
ORDER BY CreateDate DESC

答案 2 :(得分:0)

如果您对同一FirstName有不同的EventIDTRN,则会有多个小组。