Выберите отдельный user_id, перекрестное соединение с последовательностью (0, 1, 2), чтобы получить все комбинации user + sequnce, левое соединение с вашей таблицей для вычисления флага
select us.user_id,
us.sequence,
case when t.user_id is null then 'N' else 'Y' end flag
from
(--all user sequence combinations
select u.user_id, s.sequence
from (select distinct user_id from mytable) u
cross join (select stack (3, 0, 1, 2) as sequence) s
) us --all user+sequence
left join mytable t on us.sequence=t.sequence and us.user_id=t.user_id
order by us.user_id, us.sequence;
Демо с вашим пример данных:
with
mytable as ( --use your table instead of this
select stack(5,
1, 0,
1, 1,
1, 2,
2, 1,
3, 2) as (user_id,sequence)
)
select us.user_id,
us.sequence,
case when t.user_id is null then 'N' else 'Y' end flag
from
(--all user sequence combinations
select u.user_id,
s.sequence
from (select distinct user_id from mytable) u
cross join (select stack (3, 0, 1, 2) as sequence) s
) us --all user+sequence
left join mytable t on us.sequence=t.sequence and us.user_id=t.user_id
order by us.user_id, us.sequence;
Результат:
user_id sequence flag
1 0 Y
1 1 Y
1 2 Y
2 0 N
2 1 Y
2 2 N
3 0 N
3 1 N
3 2 Y