加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

在sql中找到统一个表中两个持续行之间的时刻差

发布时间:2021-04-02 12:06:28 所属栏目:编程 来源:网络整理
导读:我被卡住了.我已经找到了谜底,但好像无法从沟通表中的两个差异行中找到沟通表中的时刻减去.我在以下查询中碰着坚苦.在下表中,我想将TimeOut从一行区分到下一行的TimeIn.在下表中思量查找第1行(上午10:35)中的TimeOut与第2行(上午10:38)中的TimeIn之间的分钟差

我被卡住了.我已经找到了谜底,但好像无法从沟通表中的两个差异行中找到沟通表中的时刻减去.我在以下查询中碰着坚苦.在下表中,我想将TimeOut从一行区分到下一行的TimeIn.在下表中思量查找第1行(上午10:35)中的TimeOut与第2行(上午10:38)中的TimeIn之间的分钟差别.

表1:时刻表

ROW    EmpID       TimeIn                   TimeOut
----------------------------------------------------------------
1       138         2014-01-05 10:04:00      2014-01-05 10:35:00   
2       138         2014-01-05 10:38:00      2014-01-05 10:59:00 
3       138         2014-01-05 11:05:00      2014-01-05 11:30:00

预期后果

ROW    EmpID       TimeIn                   TimeOut                  Minutes
----------------------------------------------------------------------------
1       138         2014-01-05 10:04:00      2014-01-05 10:35:00       
2       138         2014-01-05 10:38:00      2014-01-05 10:59:00       3
3       138         2014-01-05 11:05:00      2014-01-05 11:30:00       6
etc
etc
etc

根基上,我必要区分查询中的时刻,以表现员工苏息的时刻.

我已经实行过插手,但这好像不起浸染,我不知道是否有逾越PARTITION是要走的路,由于我好像无法遵循逻辑(是的,我还在进修).我还思量了两个姑且表并举办较量,可是当我开始更他日期或员工ID时,这不起浸染.最后,我想在OVER声明中也许是LEAD?可能用CAST做DATEDIFF是否很简朴?

办理要领

我已经针对相同题目办理了这个题目,而且不必要对行举办排序:
select t1.EmpID,t1.TimeIn,t1.TimeOut,datediff(minute,max(t2.TimeOut),t1.TimeIn) as minutes
from timesheet t1 left join timesheet t2 on t1.EmpID = t2.EmpID 
       and t2.TimeOut < t1.TimeIn
group by t1.EmpID,t1.TimeOut

让我知道这个是否奏效.

这是一个sql小提琴:http://sqlfiddle.com/#!3/89a43/1

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读