Я максимально упросту задачу:
У меня есть таблица оракула:
row_priority, col1, col2, col3
0, .1, 100, {null}
12, {null}, {null}, 3
24, .2, {null}, {null}
Желаемый результат:
col1, col2, col3
.2, 100, 3
Таким образом, в соответствии с приоритетом строки, он переопределяет значения предыдущих строк, если они заданы.
Я пытаюсь найти решение, используя аналитические функции над таблицей, но оно просто не ведет себя ...
Я пытаюсь:
select last_value(col1 ignore nulls) over () col1,
last_value(col2 ignore nulls) over () col2,
last_value(col3 ignore nulls) over () col3
from (select * from THE_TABLE order by row_priority)
where rownum = 1
или обратное:
select first_value(col1 ignore nulls) over () col1,
first_value(col2 ignore nulls) over () col2,
first_value(col3 ignore nulls) over () col3
from (select * from THE_TABLE order by row_priority desc)
where rownum = 1
И ни один из них не игнорирует нули. Есть намеки?