我有一个如下所示的Server表:
EMPs
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另一个查询示例
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 = 1Id列是唯一的。
我想要一个SQL查询,要像上面的例子一样获得单个记录,我应该得到Id => 2、3和4记录;我不知道如何使用两列Max和group语句。
发布于 2020-04-09 16:53:08
我认为在这种情况下,简单的row_number()函数应该是好的:
select * from (
select *,
row_number() over (order by DateOff desc) rn
from myTable
) a where rn = 1就性能而言,您可以在用于排序和筛选结果集的列上定义索引,在本例中,DateOff用于排序,因此它是索引的良好候选。
https://stackoverflow.com/questions/61126062
复制相似问题