总结sql server 2008中的重叠时间

时间:2015-10-09 21:31:46

标签: sql sql-server

所以在这里解决一个问题,我必须通过使用2个不同设备的timestart和timestop列来获得重叠时间总和。如果line1开始并停止然后开始和停止并开始和停止并且所有3次都有重叠,那么我需要采取第一个开始时间和最后一个停止时间并总结它们。我下面的图片说明了这个想法。 Temp1是原件的副本,但没有任何额外的细节。我只需要根据第1行或第2行来计算总和。

好的,如果我们注意上面带圆圈数据的图像,需要发生的是我需要从18:10-18:47获取总时间,因为1061和1062都相互重叠。因此,我将在temp1中再添加两个colums,它将按小时分组数据,另一列将显示Line关闭的总时间。

这是指向http://sqlfiddle.com/#!3/e33ff/1

的链接

我已经搜索过这个解决方案但是解决方案是在Oracle中,或者人们使用sql-server 2014通过使用Lead()这样的分析函数来简化它,但我使用的是服务器2008

在我的sql小提琴中,我添加了一张表'结果'这会让你一瞥结果应该是什么样子。那里的条目对应于pkid = 1065和pkid = 1066。请帮忙或提供一些如何处理它的提示。

Original Table

Sample of OVerlapping

Sample of Overlapping 2

1 个答案:

答案 0 :(得分:0)

是否可以对行号进行分区并选择最小和最大时间?

select 
    d.PkID, 
    Line,
    d.dateentry, 
    TimeStart,
    Timestop, 
    Min(TimeStart) over (partition by line) as TimeStartPartition,
    Max(Timestop) over (partition by line) as TimestopPartition,
    e.TimeL1,
    f.TimeL2