最近的日期值

时间:2017-10-31 06:01:02

标签: hana

我需要一个解决方案,根据date.Suppose找到缺失值的最近日期值。我有一个像下面的临时表,列有产品日期值

Product      Date     Value  
  P1         1/10      10  
  P1         2/10      20  
  P1         3/10          
  P1         4/10   

在这里您会发现,对于3/10和4/10日期,没有值,它应该从最近的日期2/10到3/10和4/10复制值,即20。 我在HANA中使用了滞后函数,它仅将值复制为3/10,而对于日期4/10,它将为null。 HANA中是否有任何功能可以从最近的日期值中获取值,如重复LAG的类型。

我不想做游标,据我所知,SQL脚本不支持CTE

BR 艾尔沙德

1 个答案:

答案 0 :(得分:0)

请查看以下针对SAP HANA数据库的SQLScript语句

select
    Product, Date, Value
from (
select 
    pv.Product,
    pv.Date,
    ifnull(pv.Value, p.Value) as Value,
    row_number() over (partition by pv.Product, pv.Date order by p.Date desc) as rn
from ProductValue pv
left join ProductValue p
    on 
    pv.Value is null and
    p.Product = pv.Product and
    p.Date < pv.Date and
    p.Value is not null
) t
where rn = 1
order by
    Product,
    Date

我在WHERE子句

中使用了自联接和ROW_NUMBER()函数

以上SAP HANA SQL脚本的输出如下

enter image description here