我找到了很多帮助,以帮助您解释如何用0或以前的值替换NULL,但是我想用非null值替换Null值。
对于数据中的每个组,注册号可以是一个整数或NULL,我想用非null值替换所有NULL值。
因此对于此表,我想用该组的32550替换所有空值。
答案 0 :(得分:0)
Standard SQL通过lag()
选项提供last_value()
和ignore nulls
。假设有一列指定顺序的列,则可以使用以下命令获取带有值的最新行:
select t.*,
coalesce(registration,
last_value(registration ignore nulls) over (order by <ordering column>)
) as imputed_registration
from t;
答案 1 :(得分:0)
如果您有一个这样的表:
Group | Registration
----------------------
A | 32543
A | 32543
A | NULL
A | 32543
B | 12345
B | 12345
B | NULL
您可以执行以下操作:
UPDATE my_table AS a
SET registration = (
SELECT max(registration)
FROM my_table AS b
WHERE b.group = a.group
);
仅当给定的“组”的“注册”始终相同时,此方法才有效;如果没有带有“非空”“注册”的记录,则将“注册”保留为NULL。