Это возникло при ответе на вопрос другого пользователя (TheSoftwareJedi) ...
С учетом следующей таблицы:
ROW_PRIORITY COL1 COL2 COL3
0 0.1 100 <NULL>
12 <NULL> <NULL> 3
24 0.2 <NULL> <NULL>
и следующий запрос:
select 'B' METRIC, ROW_PRIORITY,
last_value(col1 ignore nulls) over (ORDER BY ROW_PRIORITY) col1,
last_value(col2 ignore nulls) over (ORDER BY ROW_PRIORITY) col2,
last_value(col3 ignore nulls) over (ORDER BY ROW_PRIORITY) col3
from (SELECT * FROM ZTEST);
Я получаю эти результаты:
METRIC ROW_PRIORITY COL1 COL2 COL3
B 0 0.1 100 <NULL>
B 12 0.1 100 3
B 24 0.2 100 3
ОЖИДАЕТСЯ:
METRIC ROW_PRIORITY COL1 COL2 COL3
B 0 0.2 100 3
B 12 0.2 100 3
B 24 0.2 100 3
Вопрос, конечно, почему я не получаю 0.2 для каждого приоритета строки в столбце col1 и т. Д.? Предполагается, что LAST_VALUE сначала выполнит ORDER BY, а затем выберет последнее значение из раздела. В случае запроса выше раздел является полным набором записей, поэтому я хотел бы увидеть ожидаемые результаты выше.
Может кто-нибудь объяснить?