如何根据条件替换空值?

ldioqlga  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(364)

是否可以将空值替换为从条件派生的值?我在oracle中有下表(左侧):

我想将manager列中的null值替换为具有最高销售额的经理的名称。我真的不在乎销售专栏。它可以保持为空。在所附图片的右侧,您可以看到所需的结果。我应该提到的是,我关心的是最后一排绿线,因此,如果剩下的信息必须去那是完全好的。

ebdffaop

ebdffaop1#

可以使用分析函数执行此操作:

select t.*,
       coalesce(manager,
                first_value(manager ignore nulls) over (order by sales desc)
               ) as imputed_manager
from t;

如果您真的想在更新中使用它,那么:

update t
    set manager = (select max(manager) keep (dense_rank first order by sales desc nulls last)
                   from t
                   where manager is not null
                  )
    where manager is null;

我不喜欢这样直接改变数据。看起来很危险。

相关问题