找到具有多个开始时间但相同停止时间的记录之间的时间不同

时间:2017-08-01 18:52:53

标签: sql-server

这是我的桌子。

id  section  secstart                   secstop
101 1       2010-03-06 02:27:49.000       2010-03-06 02:34:32.000
101 2       2010-03-06 02:28:25.000       2010-03-06 02:34:32.000
101 3       2010-03-06 02:29:58.000       2010-03-06 02:34:32.000
102 1       2008-09-11 02:15:22.000       2008-09-11 02:34:55.000
102 2       2008-09-11 02:25:32.000       2008-09-11 02:34:55.000

对于id,我想知道每个部分的时间。  正如您所看到的,每个部分的secstart时间不同,但是对于id的所有部分,secstop时间是相同的。所以第1部分所用的时间是secstart(2) - sectstart(1)等等,但是对于最后一部分,时间将是secstop - secstart。  我希望结果如下:

id  section         secstart    secstop diff
101 1   3-6-2010 2:27:49    3-6-2010 2:34:32    1
101 2   3-6-2010 2:28:25    3-6-2010 2:34:32    1
101 3   3-6-2010 2:29:58    3-6-2010 2:34:32    5
102 1   9-11-2008 2:15:22   9-11-2008 2:34:55   10
102 2   9-11-2008 2:25:32   9-11-2008 2:34:55   9

2 个答案:

答案 0 :(得分:0)

您可以使用sed -i '/^9856,/s/[^,]*/Yes/28' file.csv

DATEDIFF()

答案 1 :(得分:0)

只需获取min()开始时间以及每个max()的{​​{1}}结束时间 - 然后使用ID

DATEDIFF()

修改

with cte as(
select
    ID
    ,min(secstart) as secstart
    ,max(secstop) as secstop
from
    YourTable
group by ID)

select
    ID
    ,datediff(minute,secstart,secstop)
from
    cte