sql - SQL如何返回具有最近日期和最高int值的记录
问题描述
我必须返回 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
推荐阅读
- javascript - 如何在特定字符串上使用 if
- javascript - 在 PHP/HTML 中按下按钮不会执行任何操作
- python - 如何用从python中的另一个矩阵获取的索引填充矩阵的元素
- php - 如果不是数组,为什么php不显示未定义的索引错误?
- elasticsearch - 如何对弹性搜索中的数组子字段使用术语?
- docker - Docker-compose 服务构建和部署工作流程
- go - 在 VS Code 终端中运行我的代码时如何更新 VS Code GOPATH?
- python - K。
Python 2 中的符号 - c# - 将 CroppedBitmap 绑定到位图图像会生成错误
- sql-server - 缩小已删除大部分数据的 SQL Server 数据库