是否可以将空值替换为源自条件的值?
我在Oracle中有下表(左侧):
我想用具有最高Sales的Manager名称替换manager列中的NULL值。我不太在乎“销售”列。它可以保留为NULL。在所附图片的右侧,您可以看到所需的结果。我应该提到的是,我只关心最后一个绿色行,因此,如果必须删除其余信息,那完全没问题。
答案 0 :(得分:0)
您可以使用分析功能来做到这一点:
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;
我不喜欢这样直接更改数据。看来很危险。