根据DATETIME选择最新记录

时间:2014-01-13 14:10:48

标签: sql-server select distinct

我需要通过DATETIME选择每个memberid的最新记录。

SAY我的表是这样的:

MemberID    CreatedDate
188         2013-01-31 08:10:15.990
188         2013-01-31 08:10:15.970
188         2013-01-24 19:36:01.840
244         2013-01-24 19:36:01.840
244         2013-01-31 08:10:15.970
244         2013-01-31 08:10:15.980

OUT:

188 2013-01-31 08:10:15.990
 244 2013-01-31 08:10:15.980

SQL QUERY选择最新的基于日期 - 时间 - 毫秒。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

我认为这就是你要找的,你需要将memberID分组并找到最大的CreatedDate

Select memberId, max(CreatedDate) from members
Group By memberId

答案 1 :(得分:2)

最简单的是使用像ROW_NUMBER这样的排名函数:

WITH CTE AS
(
   SELECT MemberID, CreatedDate, 
          RN = ROW_NUMBER() OVER (PARTITION BY MemberID 
                                  ORDER BY CreatedDate DESC)
   FROM dbo.TableName  
)
SELECT MemberID, CreatedDate FROM CTE WHERE RN = 1

这只会返回每MemberID个记录(最新CreatedDate的记录)。如果您有多个最新记录,则会执行任意记录。如果您想在这种情况下全部使用,则必须将ROW_NUMBER替换为DENSE_RANK

答案 2 :(得分:1)

这是你在找。

 select memberid,max(createddate)  createddate from Table
    group by memberid