[英]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.