当前位置: 首页 > 面试题库 >

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

海翼
2023-03-14
问题内容

我有一张桌子,如下所示:

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

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

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

MyJob |   MyKey  |MyCode| MyDate | MyTime        
q183b | 0131081a | 9    | 100315 | 11:38        
q183b | 0132426a | 85   | 100315 | 11:36

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


问题答案:

首先,将日期和时间列合并为日期时间,以便轻松订购它们。自从我使用Sql
Server以来已经有一段时间了,但是row_number()函数和分区是一种查找由另一组分组的最大列的简便方法-partition子句类似于groupby。

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


 类似资料:
  • 问题内容: 我有这个查询,我需要选择两个日期之间的所有记录,mysql表是datetime格式。 我试过了,但是没有用。 问题答案: 尝试以下方法:

  • 问题内容: 我试图一次从一张桌子上得到2行。上周的最小日期时间(今天-7)和最晚的日期(今天)的一个。 我的桌子: 我可以通过以下方式选择上周的数据: 但我只想要第1行和第125行,因为这些是用于计算的行。所以我的问题是: 如何从上一个查询的结果中选择2行(带有MIN和MAX日期)? 问题答案: 您可以使用此: 编辑: 由于两台计算机完全有可能具有相同的值,因此应更新查询以在子句中也包含过滤器。我

  • 问题内容: 我有一张用户签入和签出时间的表(“ lms_attendance”),如下所示: 我正在尝试创建此表的视图,该表将仅输出每个用户ID的最新记录,同时给我“ in”或“ out”值,如下所示: 到目前为止,我已经很接近了,但是我意识到视图将不接受子查询,这使它变得更加困难。我得到的最接近的查询是: 但是我得到的是: 这很接近,但并不完美。我知道最后一个分组依据不应存在,但是如果没有它,它

  • 问题内容: 您好,我有一个带有列的表: *使用oracle 我想知道如何获取给定用户的最新添加的文档。 谢谢 问题答案:

  • 日期时间选择器是一个定制的picker,因此他的用法和picker完全一致。打开picker的默认值是当前时间,可以通过value参数指定 datetime-picker 定制了 onChange 和 cols 参数,请不要设置这两个参数。 <input type="text" id='datetime-picker'/> <script>   $("#datetime-picker").da

  • datePicker 日期选择或者时间选择 使用方法 AlipayJSBridge.call('datePicker', { beginDate: '2016-10-10', minDate: '2016-10-9', maxDate: '2017-10-9', mode: 1, }, function(e) { alert(JSON.stringify(e)); });