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

Откуда:
Сообщений: 17
ID........Date....................... Status
1 2019-03-11 09:00:00.000 start
1 2019-03-11 18:00:00.000 gone
2 2019-03-16 12:00:00.000 start
2 2019-03-16 22:00:00.000 gone
3 2019-03-18 02:00:12.000 start
3 2019-03-18 23:00:00.000 gone

Помогите, плз, не могу решить задачу.
Нужна разница во ремени в разрезе каждого айди между статусами gone и start/
Заранее спасибо!
21 мар 19, 23:18    [21840216]     Ответить | Цитировать Сообщить модератору
 Re: Время/дата  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
N_Reeke,

читать про LEAD/LAG
22 мар 19, 02:20    [21840239]     Ответить | Цитировать Сообщить модератору
 Re: Время/дата  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5231
N_Reeke,

+ так?


with data as
(select 1 [id], '20190311 09:00:00' [date], 'start' [status] union all
 select 1 [id], '20190311 18:00:00' [date], 'gone' [status] union all
 select 2 [id], '20190316 12:00:00' [date], 'start' [status] union all
 select 2 [id], '20190316 22:00:00' [date], 'gone' [status] union all
 select 3 [id], '20190318 02:00:12' [date], 'start' [status] union all
 select 3 [id], '20190318 23:00:00' [date], 'gone' [status]
 )
select 
d1.id, convert(varchar(20),dateadd(ss,datediff(ss,d1.date,d2.date),0),108) [diff]
from data d1
join data d2 on d1.id=d2.id and d1.status<>d2.status
where d1.status='start'


result

id diff
1 09:00:00
2 10:00:00
3 20:59:48



Replay
22 мар 19, 02:57    [21840248]     Ответить | Цитировать Сообщить модератору
 Re: Время/дата  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
komrad,

если делать предположение, что по каждому ID всего две строки, а статусы всегда идут в порядке "сначала старт, затем гон", то можно и без джойна, а банально на группировке...

select id, min(date), max(date)
...
group by id


Но есть подозрение, что автор не совсем точно сформулировал задачу. И сейчас выяснится, что пары "старт-гон" в пределах одного ID могут чередоваться сколько угодно раз.
22 мар 19, 04:05    [21840265]     Ответить | Цитировать Сообщить модератору
 Re: Время/дата  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5231
Щукина Анна,

согласен, упрощение имеет место быть

но, подозрения про формулировку задачи взяты с потолка, как мне кажется
дождемся реакции автора
)
22 мар 19, 04:11    [21840270]     Ответить | Цитировать Сообщить модератору
 Re: Время/дата  [new]
N_Reeke
Member

Откуда:
Сообщений: 17
Щукина Анна,

Спасибо за ответ!

Я сократил задание, айди могут повторяться с каждым другим днем, но на каждый день будут две даты и(соответсвенно) два статуса.
22 мар 19, 08:07    [21840302]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить