У меня есть таблица, в которой столбцы:разница Рассчитать между двумя отметками в SQL в той же таблице
ID UserId Serial ModifiedDate
---- ------ ----- ----------------
Мне нужно, чтобы вычислить де разницу между отметкой времени из каждой строки. Например, если у меня есть таблица вроде этого:
ID UserId Serial ModifiedDate
---- ------ ----- ----------------
001 1 1111 2015-07-20 10:56:53.0000000
002 1 1111 2015-07-21 18:49:24.0000000
003 1 1111 2015-07-22 08:49:23.0000000
мне нужно сделать разницу между отметкой времени от 001 до 002, затем от 002 и 003, и результат должны быть как:
ID UserId Serial ModifiedDate Difference
---- ------ ----- ---------------- --------
001 1 1111 2015-07-20 10:56:53.0000000
002 1 1111 2015-07-21 18:49:24.0000000
003 1 1111 2015-07-22 08:49:23.0000000
Я пытаюсь работать с курсорами, чтобы сделать это, но я не мог найти способ получить результат в новом столбце псевдонима.
Это мой запрос:
DECLARE @id bigint, @lastmodif datetime2(7), @id2 bigint, @lastmodif2 datetime2(7),@total int;
DECLARE status_cursor CURSOR FOR
SELECT [Id], [ModifiedDate], '0' AS Difference
FROM [Registrations]
where p.Serial = 1111
Order by ModifiedDate
OPEN status_cursor
DECLARE status_cursor2 CURSOR FOR
SELECT [Id], [ModifiedDate],'0' AS Difference
FROM [Registrations]
where p.Serial = 1111
Order by ModifiedDate
OPEN status_cursor2
FETCH NEXT FROM status_cursor2
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM status_cursor INTO @regid, @lastmodif
FETCH NEXT FROM status_cursor2 INTO @regid2, @lastmodif2
SET @total =
(
DATEDIFF(second,@lastmodif,@lastmodif2)
)
UPDATE status_cursor SET Result = @total
какая версия сервера sql? –
версия 2012 11.0.5532.0 – juanfandres
lookup LEAD и LAG –