首页 > 解决方案 > 循环两次同一张表

问题描述

我希望对于每个重复的quaivehArrival_time值,我希望将字段保持在离开时间和到达时间之间的最小差异

桌子

即删除两条下划线

在此处输入图像描述

你认为 sql 查询可以做到这一点吗?

标签: sqlsql-server

解决方案


您可以通过使用row_number()函数来查找,按前两列分区并按毫秒时间差排序,每个分区中的第一行

select quai, veh, arrival_time, depart_time
from
(
  select 
    *,  
    row_number() over (partition by quai, veh order by datediff(ms, depart_time, arrival_time)) as row
  from data -- data is your table name!
) d 
where row = 1

现场示例:https ://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=6bec69a097a720761de929b92f249ccd


推荐阅读