我有一张桌子如下:
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)