хотите найти начальную и конечную точку непоследовательного числа в хранимой процедуре оракула
Предположим, что основная таблица
ID Usage_flah
1 null
2 null
3 null
4 Yes
5 Yes
6 Null
7 NUll
Теперь мне нужны начальная и конечная позиция идентификатора во второй таблице результатов, где usage_flag равно null.
подобно
Start End
1 3
6 7
1 ответ
Решение
Вот один из способов (демонстрирующий, почему важно знать свою версию Oracle: в этом решении используется match_recognize
, представленный в Oracle 12.1)
В with
предложение предназначено только для имитации ваших входных данных; вы должны удалить его и использовать свои фактические имена таблиц и столбцов в основном запросе (select * .......
)
with
main_table (id, usage_flag) as (
select 1, null from dual union all
select 2, null from dual union all
select 3, null from dual union all
select 4, 'Yes' from dual union all
select 5, 'Yes' from dual union all
select 6, null from dual union all
select 7, null from dual
)
select *
from main_table
match_recognize (
order by id
measures first(id) as id_start, last(id) as id_end
pattern ( n+ )
define n as usage_flag is null
);
ID_START ID_END
---------- ----------
1 3
6 7