首页 > 解决方案 > SQL Server:选择同一列中具有相同值的 2 行的最大日期/时间

问题描述

Date                     Id   Name   ClockinOrOut
-------------------------------------------------
2019-12-19 10:24:00.000  4    Bob   In
2019-12-19 15:26:10.000  4    Bob   Out
2019-12-19 12:17:36.000  800  Gary  In
2019-12-19 08:41:21.000  800  Gary  Out

MAX()我似乎无法使用基于 Id 的最新日期/时间获得此输出,即使使用该函数,ClockInOrOut 是 In 还是 Out 也无关紧要

Date                     Id   Name   ClockinOrOut
-------------------------------------------------
2019-12-19 15:26:10.000  4    Bob   Out
2019-12-19 12:17:36.000  800  Gary  In 

标签: sql-servertsql

解决方案


如果您想要 each 的最新行id,那么一个方便的方法是:

select t.*
from t
where t.date = (select max(t2.date)
                from t t2
                where t2.id = t.id
               );

使用 上的索引(id, date),这可能具有非常好的性能。


推荐阅读