我有一个包含许多列的表:(上一篇文章中每个源id只有一个id,但本例中每个源id有多个id)
id col1 source_id
a1 765.3 a5
a2 3298.3 a4
a3 8762.1 a8
a4 3298.3 (null)
a5 (null) a6
a6 (null) (null)
a7 10 a5
我想填补 null values of source _id
与 values from id
. 例如, source_id a5 row has null
必须用 id a1 + id a7 values
,随后, source_id a6 row having null
替换为 a5 row
输出:
id col1 source_id
a1 765.3 a5
a2 3298.3 a4
a3 8762.1 a8
a4 3298.3 (null)
a5 765.3+10=775.3 a6
a6 765.3+10=775.3 (null)
a7 10 a5
谢谢!!
编辑:
更清楚地说,需要填充除source\u id和id之外的列中的空值。对于简化的post,只有col1,可能也有很多列
2条答案
按热度按时间uhry853o1#
使用相关层次查询(您可以在
id
列或ROWID
伪列):因此,对于您的示例数据:
这将输出:
当在层次结构的每个分支中找到第一个非空值时,可能需要停止遍历。这只需要添加一个简单的过滤器:
(输出同上)。
db<>在这里摆弄
dba5bblo2#
下一个select将为您提供那些在source\u id列中有引用,在col1列中有值的行。
这是一个演示
这是完整解决方案的一个选项:
这是一个演示