[英]Update column in SQL Server 2008
由于表中有行号,因此您可以在UPDATE
期间自行加入以适当地排列时间。 请注意,连接条件是当前DocEntry
应该与其在连接表中的前一个匹配。
UPDATE t1
SET BreakTime = DATEDIFF(SECOND, t1.Time, COALESCE(t2.Time, t1.Time))
FROM Machine_Data t1
INNER JOIN Machine_Data t2
ON t1.DocEntry = t2.DocEntry - 1
另一个要注意的是,对COALESECE()
的调用将处理表中最后一条记录的边缘情况(按DocEntry
升序排序)。 在这种情况下,它不会与任何记录匹配,因此在这种情况下,我选择报告零休息时间。
如果BreakTime
列是Time
类型,则可以使用DATEADD()
设置时间:
SET BreakTime = DATEADD(SECOND,
DATEDIFF(SECOND, t1.Time, COALESCE(t2.Time, t1.Time)),
'00:00:00')
update Machine_Data
set BreakTime = (select MAX(DATEDIFF(SECOND,M2.Time,M1.Time)) as BreakTime
from Machine_Data M1 join Machine_Data M2 on M1.DocEntry =M2.DocEntry+1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.