如果任何列在 oracle 表单中具有 NULL 值,那么如何插入下一行

Posted

技术标签:

【中文标题】如果任何列在 oracle 表单中具有 NULL 值,那么如何插入下一行【英文标题】:If any column has NULL value in oracle forms then how the next row to be inserted 【发布时间】:2017-06-30 18:11:03 【问题描述】:

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

这里在第 4 列 NULL 值存在于 Oracle 表单中。如果我们插入下一个值然后它恢复到第 4 行意味着 LA 转移到第 4 行 & PL转移到第 5 行。我们怎样才能使插入的行在 Oracle 表单中向上移动?

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于如果任何列在 oracle 表单中具有 NULL 值,那么如何插入下一行的主要内容,如果未能解决你的问题,请参考以下文章

检查多个列在表值参数中具有多个值中的任何一个

尽管列在表中,但标识符无效

Oracle:有没有一种简单的方法可以在合并/更新语句中说“如果 null 保持当前值”?

pyspark:如果列在不同行中具有相同的值,则合并两行或多行

操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误

如果两列在其行中具有相等的值,我如何实现对话框消息?