Như đã đề cập trong các nhận xét, bạn không thể trừ dấu thời gian bằng -
nhà điều hành. Sử dụng DATEDIFF
Thay vào đó, để nhận được sự khác biệt của hàng hiện tại và dấu thời gian của hàng tiếp theo, hãy sử dụng OUTER APPLY
.
select t2._number,t2._timestamp,
datediff(microsecond,t2._timestamp,t1._timestamp) as diff
from dbo.tbl t2
outer apply (select t1._timestamp
from dbo.tcp t1
where t1._number = t2._number + 1) t1
Chỉnh sửa:Để update
một cột có tên khác theo nhận xét của OP,
with cte as (
select t2._number,t2._timestamp, t2.diff,
datediff(microsecond,t2._timestamp,t1._timestamp) as diff_col
from t t2
outer apply (select t1._timestamp
from t t1
where t1._number = t2._number + 1) t1
)
update cte set diff=diff_col;