sql-server - 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
解决方案
如果您想要 each 的最新行id
,那么一个方便的方法是:
select t.*
from t
where t.date = (select max(t2.date)
from t t2
where t2.id = t.id
);
使用 上的索引(id, date)
,这可能具有非常好的性能。
推荐阅读
- c# - 在 FB 分享按钮代码中动态嵌入页面链接
- avl-tree - 我们可以这样删除avl树节点吗
- php - 为什么 .htaccess 不能删除 index.php?url
- mysql - 收入和费用计算
- kivy - 删除的小部件仍保留在父级上
- visual-studio-2019 - 在 VS2019 Preview 2.0 中运行应用程序时 Blazor 显示错误消息
- django - 如何在 django 中格式化 json 响应?
- android - 隐藏启动画面的标题和操作栏并在开始时删除白屏
- tensorflow - compute_gradients 返回的究竟是什么以及它如何依赖于 batch_size?
- android - 设置 manageSpaceActivity 会在 API 28 (Pie) 上禁用 Clear Data 按钮