Если какой-либо столбец имеет значение NULL в формах оракула, то как вставить следующую строку

Если какой-либо столбец имеет значение NULL в формах оракула, то как вставить следующую строку.

empID   city
1001    NYC
1002    DC
1003    CA
1004    NULL
1005    LA
1006    PL

Здесь, в 4-м столбце, значение NULL находится в формах Oracle. Если мы вставим следующее значение, оно вернется обратно к 4-й строке, что означает LA сдвиг в 4-ю строку и PL сдвиг в 5-ю строку. row.Как мы можем сделать так, чтобы вставленные строки смещались вверх в формах Oracle?


person Community    schedule 30.06.2017    source источник


Ответы (1)


Вы можете сделать это, используя lag( . . . ignore nulls):

select empID,
       coalesce(city, lag(city ignore nulls) over (order by empID)) as city
from t;

Если вы действительно хотите получить обновление, вы можете использовать коррелированный подзапрос:

update t
    set city = (select max(t2.city) keep (dense_rank first order by t2.empID desc)
                from t t2
                where t2.empID < t.empId
               )
    where city is null;
person Gordon Linoff    schedule 30.06.2017