所以在这里解决一个问题,我必须通过使用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。请帮忙或提供一些如何处理它的提示。
答案 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