StockPrice Table
price_date
price
2019-09-25
23.23
2019-09-26
32.54
2019-09-27
34.55
2019-09-28
null
2019-09-29
null
2019-09-30
54.22
2019-10-01
null
2019-10-02
null
2019-10-03
null
2019-10-04
null
2019-10-05
null
2019-10-06
null
2019-10-07
null
2019-10-08
33.80
2019-10-09
33.83
上表节选自某上市公司股票每日收盘价记录,适逢股市休市或该股停牌,则无收盘价记录,于表中记为null。
现需通过sql获取该公司在第a天的收盘价,若第a天无收盘价记录,则取该日之前,最近的一个收盘价作为第a天的收盘价。(例如,2019-10-05的收盘价取2019-09-30的54.22)
select
price_date,
price,
max(newprice) over (partition by num) close_price
from
(
select
price_date,
price,
newprice,
sum(c) over ( UNBOUNDED PRECEDING) num
from
(
select
price_date,
price,
if(price = null,0,price) newprice,
if(price = null,0,1) c
from
`StockPrice Table`
) t1
)t2
改了下让求距离该日期最近的,就是说可以向前取也可以向后取,说如果求最近得价格,如果为null,就向前一天和后一天找,如果找到一个不为null且距离该日期最近的,比如:2019.5.12为null,2019.5.10是32.2,2019.5.13是23.0,那2019.5.12就是23.0.因为对于5.12来说5.13比5.10近
这个需求改变了,怎么改SQL?