SQL Server选择具有最新日期时间的记录

use*_*309 10 sql

我有一张桌子如下:

MyJob|   MyKey  |MyCode|MyDate| MyTime 
----------------------------------       
q183b| 0131081a |  24  |100315| 9:37        
q183b| 0131081a |  9   |100315| 11:38        
q183b| 0132426a |  1   |90314 | 15:36        
q183b| 0132426a |  2   |100315| 9:36        
q183b| 0132426a |  85  |100315| 11:36
Run Code Online (Sandbox Code Playgroud)

请注意,MyDate格式为YYMMDD,MyTime为24小时格式.

我想用最新的MyDate和MyTime返回唯一MyKey的结果.预期的结果将是这样的:

MyJob |   MyKey  |MyCode| MyDate | MyTime        
q183b | 0131081a | 9    | 100315 | 11:38        
q183b | 0132426a | 85   | 100315 | 11:36
Run Code Online (Sandbox Code Playgroud)

任何帮助都感激不尽.谢谢.

小智 6

首先将日期+时间列组合成日期时间,以便轻松订购它们.我使用Sql Server已经有一段时间了,但是row_number()函数和分区是查找一个列的最大值的简单方法 - partition子句类似于group by.

select t.* 
from
(
    select t.MyKey, t.MyDateTime
    , row_number() over 
         (partition by t.mykey order by t.MyDateTime desc) as keyOrderNbr
    from table t
) A
inner join table t
    on A.MyKey = t.MyKey 
    and A.MyDateTime = t.MyDateTime
where A.keyOrderNbr = 1
Run Code Online (Sandbox Code Playgroud)