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

Откуда:
Сообщений: 106
Добрый день, есть такая таблица:

Date Status Duration
2019-11-26 14:38:33.547 1 36
2019-11-26 14:38:25.687 0 9
2019-11-26 14:38:14.347 1 24
2019-11-26 14:38:13.220 0 19
2019-11-26 14:38:13.220 1 32


Можно ли соединить Status = 1 с Status = 0. Чтобы получилось так?:

Duration
45
43
32
26 ноя 19, 15:02    [22025729]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли сплющить данные так?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Hopfen_Artur, можно.

Например, так:

SELECT Duration FROM (
SELECT Status, t.Duration + LEAD(Duration, 1, 0) OVER (ORDER BY t.Date DESC, t.Status ASC) AS Duration

FROM (VALUES(cast('2019-11-26 14:38:33.547' as datetime),	1,	36),
            (cast('2019-11-26 14:38:25.687' as datetime),	0,	9 ),
            (cast('2019-11-26 14:38:14.347' as datetime),	1,	24),
            (cast('2019-11-26 14:38:13.220' as datetime),	0,	19),
            (cast('2019-11-26 14:38:13.220' as datetime),	1,	32)) AS t (Date, Status, Duration)
) t
WHERE t.Status = 1
26 ноя 19, 15:25    [22025760]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли сплющить данные так?  [new]
3unknown
Member

Откуда: New York
Сообщений: 140
declare @t table (Date datetime, Status int, Duration int)

insert @t 
VALUES(cast('2019-11-26 14:38:33.547' as datetime),	1,	36),
            (cast('2019-11-26 14:38:25.687' as datetime),	0,	9 ),
            (cast('2019-11-26 14:38:14.347' as datetime),	1,	24),
            (cast('2019-11-26 14:38:13.220' as datetime),	0,	19),
            (cast('2019-11-26 14:38:13.220' as datetime),	1,	32)

;with a as(
select* 
,row_number() over(order by 1/0) n
from @t
)
,b as (select*
,sum(status) over(order by n) gr
from a)
select sum(duration) duration
from b
group by gr
order by gr


Сообщение было отредактировано: 27 ноя 19, 03:07
27 ноя 19, 03:04    [22026205]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить