Если пример, который я привел в комментарии, это то, что вам нужно, вы можете использовать следующий код, предполагая, что вы хотите выбрать все строки where context = 'c1'
, текущий value = 'v1'
, следующее значение = 'v3', если ordered by time
:
declare @t table
(
Time_ DateTime,
user_ bigint,
context varchar(50),
value_ varchar(50)
);
insert into @t values
('20000101', 1, 'c1', 'v1'),
('20000102', 1, 'c2', 'v3'),
('20000103', 1, 'c1', 'v3'),
('20000104', 2, 'c1', 'v1'),
('20000105', 2, 'c1', 'v4'),
('20000106', 2, 'c1', 'v2');
with cte as
(
select *,
lead(value_) over(partition by user_ order by time_) as next_value
from @t
where context = 'c1'
)
select *
from cte
where next_value = 'v3';