目录
0 需求
表名:t
表字段及内容:
date_id a b c
2014 AB 12 bc
2015 23
2016 d
2017 BC
问题:如何使用最新数据补全表格
输出结果如下所示:
date_id a b c
2014 AB 12 bc
2015 AB 23 bc
2016 AB 23 d
2017 BC 23 d
应用场景:补全稀疏表格,获取用户点击事件时所对应的当前页面。
1 数据准备
create table t as
select '2014' as date_id,'AB' as a,'12' as b,'bc' as c
UNION ALL
select '2015' as date_id,null as a,'23' as b,null as c
UNION ALL
select '2016' as date_id,null as a,null as b,'d' as c
UNION ALL
select '2017' as date_id,'BC' as a,null as b,null as c
2 问题分析
该问题的本质还是利用随时间变化区分可变和不可变数据的技巧。
SQL如下:
结果如下:
+----------+-----+-----+-----+
| date_id | a | b | c |
+----------+-----+-----+-----+
| 2014 | AB | 12 | bc |
| 2015 | AB | 23 | bc |
| 2016 | AB | 23 | d |
| 2017 | BC | 23 | d |
+----------+-----+-----+-----+