这在回答另一个用户的问题(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
问题当然是,为什么我不能为 col1 中的每一行优先级获得 0.2 等?LAST_VALUE 应该首先执行 ORDER BY,然后从分区中选择最后一个值。在上述查询的情况下,分区是整个记录集,所以我会在上面看到我的预期结果。
谁能解释一下?