【问题标题】:Selecting the latest record based on DATETIME [duplicate]根据 DATETIME 选择最新记录 [重复]
【发布时间】:2014-02-01 07:39:10
【问题描述】:

我需要在 DATETIME 之前选择每个 memberid 的最新记录。

说我的桌子是这样的:

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

输出:

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

SQL QUERY 根据日期-时间-毫秒选择最新的。

提前感谢您的帮助。

【问题讨论】:

  • 你有没有尝试写任何东西来获得你想要的输出?

标签: sql-server select distinct


【解决方案1】:

我认为这就是您要查找的内容,您需要对 memberID 进行分组并找到最大 CreatedDate

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

【讨论】:

    【解决方案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

    【讨论】:

      【解决方案3】:

      这是你要找的吗?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-19
        • 2014-05-23
        • 2012-03-27
        • 1970-01-01
        • 2013-01-10
        • 1970-01-01
        • 2020-02-03
        相关资源
        最近更新 更多