Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разница значений между строками  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
есть таблица
recid createddatetime closeddatetime n
023CF0F378F84A22B1E2E7B5813A3315 2011-06-01 10:34:46.037 2011-06-03 09:35:17.573 1
2859DF58B34E40D999A4750956DCE263 2011-06-03 09:45:51.700 2011-06-17 09:11:17.797 2
8C1F8D3D966048DF942A6E884EB9217D 2011-06-17 09:24:15.213 NULL 3

Нужно найти разность между
closeddatetime и createddatetime следующей строки

Сделал запрос
select n1.RecId,n1.CreatedDateTime,n1.ClosedDateTime,n1.N,n2.CreatedDateTime, DATEDIFF(ss,n1.ClosedDateTime,n2.CreatedDateTime) as diff from 
(select n.recid,n.CreatedDateTime,n.ClosedDateTime, ROW_NUMBER() over(order by n.CreatedDateTime) as N

from table n
n1.ParentLink_RecID='09B770FA087D4998A0BC044FF9817ADF' ) n2

where n.ParentLink_RecID='09B770FA087D4998A0BC044FF9817ADF') as n1  
left join
 (select n1.CreatedDateTime,ROW_NUMBER() over(order by n1.createddatetime) as n from table n1 where n1.ParentLink_RecID='09B770FA087D4998A0BC044FF9817ADF' ) as n2 
 on n1.N+1=n2.n
получаю результат
023CF0F378F84A22B1E2E7B5813A3315 2011-06-01 10:34:46.037 2011-06-03 09:35:17.573 1 2011-06-03 09:45:51.700 634
2859DF58B34E40D999A4750956DCE263 2011-06-03 09:45:51.700 2011-06-17 09:11:17.797 2 2011-06-17 09:24:15.213 778
8C1F8D3D966048DF942A6E884EB9217D 2011-06-17 09:24:15.213 NULL 3 NULL NULL

вопрос- почему разница выходит какая-то не та, кпримеру в 1- й строке должно быть около 616 с.
10 авг 11, 12:54    [11097022]     Ответить | Цитировать Сообщить модератору
 Re: Разница значений между строками  [new]
многовато тут букв
Guest
Slava_Nik,
Если бы DDL на табличку написал, было бы лучше.
А
select datediff(тут что надо, T1.closed, T2.created)
table T1 join table T2 on T1.n = T2.n+1
чем не устраивает?
10 авг 11, 13:00    [11097089]     Ответить | Цитировать Сообщить модератору
 Re: Разница значений между строками  [new]
Glory
Member

Откуда:
Сообщений: 104751
Slava_Nik
вопрос- почему разница выходит какая-то не та, кпримеру в 1- й строке должно быть около 616 с.

По какой такой математике разница в секундах должна быть 616, да еще "около" ?
select DATEDIFF(ss, '2011-06-03 09:35:17.573', '2011-06-03 09:45:51.700')

51-17 сколько будет ?
10 авг 11, 13:00    [11097095]     Ответить | Цитировать Сообщить модератору
 Re: Разница значений между строками  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
блин, да все верно ошибся, просто цифирки сливаются на мониторе, брал 35 минут и 51 сек.
10 авг 11, 13:05    [11097142]     Ответить | Цитировать Сообщить модератору
 Re: Разница значений между строками  [new]
многовато тут букв
Guest
Slava_Nik,
Тебе это было надо?
declare @dt datetime
set @dt = getdate();

if object_id('tempdb..#t') is not null
 drop table #t;
create table #t (id int identity(1,1), _start datetime, _end datetime);
insert into #t
([_start], [_end])
select @dt, dateadd(ss, 10, @dt) union all
select dateadd(ss, 10, @dt), dateadd(ss, 10, @dt) union all
select dateadd(ss, 20, @dt), dateadd(ss, 30, @dt) union all
select dateadd(ss, 40, @dt), dateadd(ss, 50, @dt);

select datediff(ss, T1.[_end], T2._start) 
from #t T1
left join #t T2 on T1.id = T2.id+1
10 авг 11, 13:05    [11097144]     Ответить | Цитировать Сообщить модератору
 Re: Разница значений между строками  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
многовато тут букв,

так одно и тоже , вроде, за исключение у меня id нет, соответвенно я его реализовал через row_number()
10 авг 11, 13:13    [11097228]     Ответить | Цитировать Сообщить модератору
 Re: Разница значений между строками  [new]
многовато тут букв
Guest
Slava_Nik,
Я так понял, что поле n несёт тот же смысл , что и id, а запрос твой что-то меня так запугал, что я даже вникать в него не стал.
10 авг 11, 13:22    [11097329]     Ответить | Цитировать Сообщить модератору
 Re: Разница значений между строками  [new]
alexejs
Member

Откуда:
Сообщений: 147
http://blogs.technet.com/b/isv_team/archive/2011/08/03/3444815.aspx
12 авг 11, 17:49    [11111892]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить