gpt4 book ai didi

sql - sql中查找同一个表中连续两行之间的时间差

转载 作者:行者123 更新时间:2023-12-02 19:05:38 27 4
gpt4 key购买 nike

我被困住了。我一直在寻找答案,但似乎无法找到从同一张表的两个不同行中减去同一张表中适合的时间。我在执行以下查询时遇到困难。在下表中,我想区分一行的 TimeOut 和下一行的 TimeIn。请考虑在下表中查找第 1 行中的 TimeOut(上午 10:35)和第 2 行中的 TimeIn(上午 10:38)之间的分钟差异。

表 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 进行 OVER 是否可行,因为我似乎无法遵循逻辑(是的,我还在学习)。我还考虑了两个临时表并比较它们,但是当我开始更改日期或员工 ID 时,这不起作用。最后,我想也许在 OVER 语句中使用 LEAD ?或者使用 CAST 执行 DATEDIFF 是否很简单?

最佳答案

尝试类似的事情:

select *, DATEDIFF(minute, (
select max(b.TimeOut)
from TIMESHEET as b where a.EmpID=b.EmpID and b.ROW<a.ROW
), a.TimeIn
) as diff
from TIMESHEET as a

关于sql - sql中查找同一个表中连续两行之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26131917/

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