gpt4 book ai didi

SQL如何返回具有最近日期和最高int值的记录

转载 作者:行者123 更新时间:2023-12-04 23:51:50 25 4
gpt4 key购买 nike

我必须返回 SQL 数据库中按 CallID 分组的最新行。在这种情况下,“最近”是指该日期最近的 DepartureDate 和最高的 Departuretime (int)。请参阅以下示例供您引用:

set dateformat dmy
create table #Temp
(
Callid nvarchar(6),
Linenum nVarchar(6),
Engineerid nvarchar (4),
Departuredate DateTime,
Departuretime int
)
insert into #Temp
Values (
'100000','1','AToo','05/09/2017','57896'),
('100000','1.5','DBok','05/09/2017','57898'),
('100000','1.75','DBok','05/09/2017','57895'),
('100000','2','GKar','04/09/2017','59805'),
('100000','3','ALee','05/09/2017','54895'),
('100001','1','GKar','08/09/2017','54000'),
('100001','2','GKar','08/09/2017','58895'),
('100001','2.25','ALee','08/09/2017','56875'),
('100001','2.5','DBok','07/09/2017','59000')

select * from #Temp
drop table #Temp

上面我要返回的是以下两条记录:

CallID  Linenum  Engineerid  Departuredate  Departuretime
100000 1.5 DBok 05/09/2017 57898
100001 2 GKar 08/09/2017 58895

最佳答案

您可以使用 row_number 窗口函数对每个 callid 的记录进行排序,然后只取第一个:

SELECT CallID, Linenum, Engineerid, Departuredate, Departuretime
FROM (SELECT CallID, Linenum, Engineerid, Departuredate, Departuretime,
ROW_NUMBER() OVER (PARTITION BY CallID
ORDER BY Departuredate DESC, Departuretime DESC) AS rn
FROM #Temp) t
WHERE rn = 1

关于SQL如何返回具有最近日期和最高int值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52259258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com