powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Время/дата
6 сообщений из 6, страница 1 из 1
Время/дата
    #39789859
N_Reeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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/
Заранее спасибо!
...
Рейтинг: 0 / 0
Время/дата
    #39789868
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
N_Reeke,

читать про LEAD / LAG
...
Рейтинг: 0 / 0
Время/дата
    #39789871
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
N_Reeke,

так?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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
Код: plaintext
1.
2.
3.
id	diff
1	09:00:00
2	10:00:00
3	20:59:48



Replay
...
Рейтинг: 0 / 0
Время/дата
    #39789872
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

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

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


Но есть подозрение, что автор не совсем точно сформулировал задачу. И сейчас выяснится, что пары "старт-гон" в пределах одного ID могут чередоваться сколько угодно раз.
...
Рейтинг: 0 / 0
Время/дата
    #39789873
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

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

но, подозрения про формулировку задачи взяты с потолка, как мне кажется
дождемся реакции автора
)
...
Рейтинг: 0 / 0
Время/дата
    #39789885
N_Reeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

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

Я сократил задание, айди могут повторяться с каждым другим днем, но на каждый день будут две даты и(соответсвенно) два статуса.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Время/дата
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]