匿名用户
1级
2015-06-29 回答
last_value 默认的统计区间是开始行到当前行,类似累加的处理方式,所以需要指定一下统计区间,例子:
select distinct r.user_id,
last_value(r.cell ignore nulls) over(partition by r.user_id order by r.store_time desc rows between unbounded preceding and unbounded following) as cell
from test1 r;
追问:
但取出来的不是最后一条的cell,是中间时间段的cell的。这要怎么改?
追答:
你确定是中间的么, 目前这个是不为空的数据中取时间最早的, 取时间最晚就是改下order by 就行了
追问:
嗯,取出来的确实是中间时间的数据,不过是默认排序的第一个。说明order by r.store_time desc 完全不起作用。
追答:
我测试没问题的.
SQL> select * from test1 r order by user_id,r.store_time desc;
USER_ID STORE_TIME CELL
---------- ----------- ----------
A 2015-07-28
A 2015-07-22
A 2015-07-16 9
A 2015-07-15
A 2015-07-14