首页 文章

SQL查询最新日期/时间每个ID的戳记录

提问于
浏览
-1

请帮助排序下面的列表TABLE,

ID NAME DATE TIME STATUS

ID是唯一的,名称,日期,时间,状态在数据库中不断变化 .

我需要输出列表,每个用户ID都有 Latest STATUS,DATE和TIME标记

3 回答

  • 0
    SELECT * FROM table
    WHERE C_Time = 
      (SELECT max(C_Time) FROM table t1 WHERE C_Date = 
        (SELECT max(C_Date) FROM table t2 WHERE t1.ID = t2.ID)
      );
    

    这为您提供了每个 ID 的最高 C_DateC_Time 值的条目

  • 0

    我会使用窗口函数:

    select t.*
    from (select t.*,
                 row_number() over (partition by id order by date desc, time desc) as seqnum
          from t
         ) t
    where seqnum = 1;
    

    或者,如果您有一个每个客户有一行的表,那么 apply 可能是最好的:

    select t.*
    from customers c cross apply
         (select top (1) t.*
          from t
          where t.id = c.id
          order by date desc, time desc
         ) t;
    
  • 0

    怎么样

    SELECT T1.*
    FROM T T1 INNER JOIN
        (
            SELECT ID,
                   CName,
                   MAX(CDate) CDate,
                   MAX(CTime) CTime
            FROM T
            GROUP BY ID,
                     CName
        ) T2 
    ON T1.CDate = T2.CDate 
       AND 
       T1.CTime = T2.CTime 
       AND T1.CName = T2.CName;
    

    哪个会回归

    +---------------------+----------+--------+----+-------+
    |        CDate        |  CTime   | Status | ID | CName |
    +---------------------+----------+--------+----+-------+
    | 22/12/2018 00:00:00 | 16:27:57 |      1 |  1 | A     |
    | 21/12/2018 00:00:00 | 15:41:13 |      4 |  2 | B     |
    | 20/12/2018 00:00:00 | 12:35:27 |      3 |  2 | C     |
    | 21/12/2018 00:00:00 | 15:29:46 |      4 |  3 | D     |
    +---------------------+----------+--------+----+-------+
    

    要么

    SELECT T1.*
    FROM T T1 INNER JOIN
        (
            SELECT ID,
                   MAX(CDate) CDate,
                   MAX(CTime) CTime
            FROM T
            GROUP BY ID
        ) T2 
    ON T1.CDate = T2.CDate 
       AND 
       T1.CTime = T2.CTime;
    

    哪个会回归

    +---------------------+----------+--------+----+-------+
    |        CDate        |  CTime   | Status | ID | CName |
    +---------------------+----------+--------+----+-------+
    | 22/12/2018 00:00:00 | 16:27:57 |      1 |  1 | A     |
    | 21/12/2018 00:00:00 | 15:41:13 |      4 |  2 | B     |
    | 21/12/2018 00:00:00 | 15:29:46 |      4 |  3 | D     |
    +---------------------+----------+--------+----+-------+
    

    Demo

相关问题