通过以下查询,我可以使用 LAG() 函数重复列的最后一个非空值c:
SELECT coalesce(open_time, extract(EPOCH from date_trunc('minute', datetime)) * 1000) open_time,
coalesce(o, LAG(c) over w) o,
coalesce(h, LAG(c) over w) h,
coalesce(l, LAG(c) over w) l,
coalesce(c, LAG(c) over w) c,
coalesce(v, 0) v,
coalesce(close_time, extract(EPOCH from date_trunc('minute', datetime)) * 1000 + ((60000 * 1) - 1)) close_time
from temporary_timeframe
window w as (order by datetime);
Run Code Online (Sandbox Code Playgroud)
得到以下结果:
但是我需要c在当前列值为空时重复列的值。我看到如果 PostgreSQL 支持IGNORE NULLS窗口函数的属性,这将得到解决。如何解决这个没有IGNORE NULLS?