首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于从两列获取具有最大日期的记录的SQL查询

关于从两列获取具有最大日期的记录的SQL查询
EN

Stack Overflow用户
提问于 2020-04-09 16:43:32
回答 1查看 42关注 0票数 0

我有一个如下所示的Server表:

EMPs

代码语言:javascript
复制
Id  Name    DateOn              DateOff     
-------------------------------------------------
1   EMP1    2020-9-4 12:00 AM   NULL
2   EMP1    2020-9-4 12:00 AM   2020-9-4 10:00 PM
3   EMP2    2020-7-4 12:00 AM   NULL
4   EMP4    2020-7-4 12:00 AM   2020-9-4 10:00 PM

另一个查询示例

代码语言:javascript
复制
DECLARE @EMP TABLE
(
    Id INT,
    NAME VARCHAR(200),
    AlarmOnTimeStamp DATETIMEOFFSET,
    AlarmOffTimeStamp DATETIMEOFFSET NULL
);


INSERT INTO @EMP VALUES(1,'Test1','2020-04-09 01:56:29.507',NULL)
INSERT INTO @EMP VALUES(2,'Test1','2020-04-09 01:56:29.507','2020-04-09 03:56:29.507')
INSERT INTO @EMP VALUES(3,'Test2','2020-04-09 01:56:29.507','2020-04-09 03:56:29.507')


select * from (
    select *,
           row_number() over (order by a.AlarmOffTimestamp  desc) rn
    from @EMP a
) a where rn = 1

在这里输入图像描述

Id列是唯一的。

我想要一个SQL查询,要像上面的例子一样获得单个记录,我应该得到Id => 2、3和4记录;我不知道如何使用两列Max和group语句。

EN

回答 1

Stack Overflow用户

发布于 2020-04-09 16:53:08

我认为在这种情况下,简单的row_number()函数应该是好的:

代码语言:javascript
复制
select * from (
    select *,
           row_number() over (order by DateOff desc) rn
    from myTable
) a where rn = 1

就性能而言,您可以在用于排序和筛选结果集的列上定义索引,在本例中,DateOff用于排序,因此它是索引的良好候选。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61126062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档