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

Откуда:
Сообщений: 132
Добрый день,

есть таблица:
event name prd start_time end_time
tag1 prd7A 12-05-16 10:15 15-05-16 10:20
tag1 prdB7 12-05-16 10:15 15-05-16 10:20
tag1 prd6D 12-05-16 10:15 15-05-16 10:20
tag1 prd9D 12-05-16 10:15 15-05-16 10:20
tag2 prd2L 18-03-16 11:00 18-03-16 11:30
tag2 prd5M 18-03-16 11:00 18-03-16 11:30
tag2 prd2L 18-03-16 11:44 18-03-16 11:55
tag2 prd5M 18-03-16 11:44 18-03-16 11:55
tag2 prd2L 18-03-16 12:05 18-03-16 12:30
tag2 prd5M 18-03-16 12:05 18-03-16 12:30
tag2 prd3Q 19-03-16 12:00 19-03-16 12:45


event name prd start_time end_time time_diff
tag1 prd7A 12-05-16 10:15 15-05-16 10:20 0
tag1 prdB7 12-05-16 10:15 15-05-16 10:20 0
tag1 prd6D 12-05-16 10:15 15-05-16 10:20 0
tag1 prd9D 12-05-16 10:15 15-05-16 10:20 0
tag2 prd2L 18-03-16 11:00 18-03-16 11:30 14
tag2 prd2L 18-03-16 11:44 18-03-16 11:55 14
tag2 prd2L 18-03-16 12:05 18-03-16 12:30 10
tag2 prd5M 18-03-16 11:00 18-03-16 11:30 14
tag2 prd5M 18-03-16 11:44 18-03-16 11:55 14
tag2 prd5M 18-03-16 12:05 18-03-16 12:30 10
tag2 prd3Q 19-03-16 12:00 19-03-16 12:45 0


группировать по event name и prd, также start_time евента следующим за предыдущим евентом отнимает end_time предыдущего евента


заранее благодарю за ответы.
13 сен 16, 16:38    [19660313]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
sakot,

вы по моему ошиблись форумом, вам в раздел работа, там будете командовать кому и чего группировать.
13 сен 16, 16:44    [19660357]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
sakot
Member

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

я извиняюсь, хотел бы на выходе получить следующую таблицу с колоной time_diff:

event name prd start_time end_time time_diff
tag1 prd7A 12-05-16 10:15 15-05-16 10:20 0
tag1 prdB7 12-05-16 10:15 15-05-16 10:20 0
tag1 prd6D 12-05-16 10:15 15-05-16 10:20 0
tag1 prd9D 12-05-16 10:15 15-05-16 10:20 0
tag2 prd2L 18-03-16 11:00 18-03-16 11:30 14
tag2 prd2L 18-03-16 11:44 18-03-16 11:55 14
tag2 prd2L 18-03-16 12:05 18-03-16 12:30 10
tag2 prd5M 18-03-16 11:00 18-03-16 11:30 14
tag2 prd5M 18-03-16 11:44 18-03-16 11:55 14
tag2 prd5M 18-03-16 12:05 18-03-16 12:30 10
tag2 prd3Q 19-03-16 12:00 19-03-16 12:45 0


то есть хотель сгруппировать по event name и prd где start_time евента следующим за предыдущим евентом отнимает end_time предыдущего евента.
13 сен 16, 16:47    [19660379]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
sakot,

версию сервера угадывать?
13 сен 16, 16:51    [19660403]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
sakot
Member

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

извиняюсь 2008.
13 сен 16, 16:52    [19660411]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
sakot,
https://www.sql.ru/forum/1223200/sravnenie-dvuh-zapisey-v-tablice?hl=lag
13 сен 16, 16:54    [19660423]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
sakot
Member

Откуда:
Сообщений: 132
подкину 100 рубликов за решение, если это не возбраняется форумом.

заранее благодарю.
13 сен 16, 16:54    [19660424]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
sakot,

белорусских?
13 сен 16, 16:57    [19660440]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
sakot
Member

Откуда:
Сообщений: 132
российских
13 сен 16, 16:59    [19660458]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
3unknown
Member

Откуда: New York
Сообщений: 140
Если бакинских, то можно.
13 сен 16, 17:01    [19660465]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
sakot,

https://www.sql.ru/forum/job

или бесплатно воспользоваться поиском
13 сен 16, 17:01    [19660468]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4374
sakot
также start_time евента следующим за предыдущим евентом отнимает end_time предыдущего евента

Когда прочитал, пошла кровь из уха.
13 сен 16, 18:16    [19660871]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
sakot
WarAnt,

я извиняюсь, хотел бы на выходе получить следующую таблицу с колоной time_diff:

event name prd start_time end_time time_diff
tag1 prd7A 12-05-16 10:15 15-05-16 10:20 0
tag1 prdB7 12-05-16 10:15 15-05-16 10:20 0
tag1 prd6D 12-05-16 10:15 15-05-16 10:20 0
tag1 prd9D 12-05-16 10:15 15-05-16 10:20 0
tag2 prd2L 18-03-16 11:00 18-03-16 11:30 14
tag2 prd2L 18-03-16 11:44 18-03-16 11:55 14
tag2 prd2L 18-03-16 12:05 18-03-16 12:30 10
tag2 prd5M 18-03-16 11:00 18-03-16 11:30 14
tag2 prd5M 18-03-16 11:44 18-03-16 11:55 14
tag2 prd5M 18-03-16 12:05 18-03-16 12:30 10
tag2 prd3Q 19-03-16 12:00 19-03-16 12:45 0


то есть хотель сгруппировать по event name и prd где start_time евента следующим за предыдущим евентом отнимает end_time предыдущего евента.


чета логика формирования данных в таблице не угадывается ниразу, покажите как получилось например число 14? и вообще это что за число секунды, минуты, дни, попугаи?
13 сен 16, 19:02    [19661038]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
sakot
Member

Откуда:
Сообщений: 132
это минуты,

tag2, prd2L, 18-03-16 11:00, 18-03-16 11:30, 14
tag2, prd2L, 18-03-16 11:44, 18-03-16 11:55, 14
tag2, prd2L, 18-03-16 12:05, 18-03-16 12:30, 10

"18-03-16 11:44" - "18-03-16 11:30" = 14 мин
"18-03-16 12:05" - "44, 18-03-16 11:55" = 10 мин

для первого значения "18-03-16 11:00,18-03-16 11:30" = может быть любое значение только не ноль, можно взять 14 или 10 из
последующих вычеслений.
13 сен 16, 19:43    [19661165]     Ответить | Цитировать Сообщить модератору
 Re: разница между датами  [new]
3unknown
Member

Откуда: New York
Сообщений: 140
declare @t table(event_name varchar(15),prd varchar(15),start_time datetime,end_time datetime)
declare @t1 table(event_name varchar(15),prd varchar(15),start_time datetime,end_time datetime,d int)

insert @t
values('tag1','prd7A','2016-05-16 10:15','2016-05-16 10:20'),
('tag1','prdB7','2016-05-16 10:15','2016-05-16 10:20'),
('tag1','prd6D','2016-05-16 10:15','2016-05-16 10:20'),
('tag1','prd9D','2016-05-16 10:15','2016-05-16 10:20'),
('tag2','prd2L','2016-03-18 11:00','2016-03-18 11:30'),
('tag2','prd5M','2016-03-18 11:00','2016-03-18 11:30'),
('tag2','prd2L','2016-03-18 11:44','2016-03-18 11:55'),
('tag2','prd5M','2016-03-18 11:44','2016-03-18 11:55'),
('tag2','prd2L','2016-03-18 12:05','2016-03-18 12:30'),
('tag2','prd5M','2016-03-18 12:05','2016-03-18 12:30'),
('tag2','prd3Q','2016-03-19 12:00','2016-03-19 12:45')


insert @t1
select t.event_name,t.prd,t.start_time,t.end_time,datediff(MINUTE,t1.end_time,t.start_time) d
from(
select*
,row_number() over(partition by event_name,prd order by start_time) num
from @t
) t
left join
(
select*
,row_number() over(partition by event_name,prd order by start_time) num
from @t
) t1 on t.event_name = t1.event_name and t.prd = t1.prd
and t.num = t1.num + 1

select t.event_name,t.prd,t.start_time,t.end_time,isnull(t.d,b.d) as time_diff
from @t1 t
join(
select event_name,prd,isnull(max(d),0) as d
from @t1
group by event_name,prd
) b on b.event_name = t.event_name and b.prd = t.prd 
13 сен 16, 21:49    [19661472]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить