下面是输入表:
| 月份|价值|
| - ------|- ------|
| 1个|二百|
| 第二章|- -|
| 三个|- -|
| 四个|三百|
| 五个|- -|
预期产出:
| 月份|价值|
| - ------|- ------|
| 1个|二百|
| 第二章|二百|
| 三个|二百|
| 四个|三百|
| 五个|三百|
我确实尝试在SQL中使用LAG函数,结果我能够填充立即NULL值的值,在上面的示例中为第2个月,但下个月(第3个月)仍具有NULL值
下面是输入表:
| 月份|价值|
| - ------|- ------|
| 1个|二百|
| 第二章|- -|
| 三个|- -|
| 四个|三百|
| 五个|- -|
预期产出:
| 月份|价值|
| - ------|- ------|
| 1个|二百|
| 第二章|二百|
| 三个|二百|
| 四个|三百|
| 五个|三百|
我确实尝试在SQL中使用LAG函数,结果我能够填充立即NULL值的值,在上面的示例中为第2个月,但下个月(第3个月)仍具有NULL值
4条答案
按热度按时间uqcuzwp81#
可以使用
LEAD
函数构建查询,将数据转换为范围,如下所示:| 从_月|至_月|价值|
| - ------|- ------|- ------|
| 1个|三个|二百|
| 四个|五个|三百|
然后使用
update join
语句更新表,如下所示:See demo
nqwrtyyt2#
您可以通过使用以下内容创建分区来模拟
LAST_VALUE
函数以忽略空值:然后将空值更新为每个分区的最大值。
检查here演示。
olhwl3o23#
您可以使用简单的关联和可更新的表表达式来完成此操作:
yv5phkfx4#
如果您不喜欢老式的解决方案,您也可以一次完成: