我有2个表格-日期和数据,其数据如下:表格:日期
Date
1/02/2020
2/02/2020
3/02/2020
4/02/2020
5/02/2020
6/02/2020
7/02/2020
8/02/2020
9/02/2020
10/02/2020
表:数据
Date Id Amount
1/02/2020 1 10
3/02/2020 1 30
10/02/2020 1 50
2/02/2020 2 5
6/02/2020 2 10
9/02/2020 2 20
预期成绩:
Date Id Amount
1/02/2020 1 10
2/02/2020 1 10
3/02/2020 1 30
4/02/2020 1 30
5/02/2020 1 30
6/02/2020 1 30
7/02/2020 1 30
8/02/2020 1 30
9/02/2020 1 30
10/02/2020 1 50
2/02/2020 2 5
3/02/2020 2 5
4/02/2020 2 5
5/02/2020 2 5
6/02/2020 2 10
7/02/2020 2 10
8/02/2020 2 10
9/02/2020 2 20
我尝试使用PARTITION OVER,但是从Dates表中获取重复的价位和并非所有日期,因此未获得期望的结果。如果您可以帮助Hive SQL中的代码,请多谢。
使用cross join
来生成行。然后left join
将两个表合并。最后用于last_value()
引入缺失值:
select d.date, i.id,
last_value(amount, TRUE) over (partition by id order by d.date) as amount
from date d cross join
(select distinct id from data) i left join
data t
on d.date = t.date and i.id = t.id;
在last_value()
与第二个参数忽略NULL
值,所以它会“返回”,以获取最新的非NULL
价值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句