ORACLE PL/SQL如何在过程中创建ParentID

ORACLE PL/SQL如何在过程中创建ParentID,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个从表中加载数据的过程,并且有一个子和父关系部门代码和父关系部门代码。因此,我还有两列,它们的ID都是这些列的ID,列ID_DEPARTMENT是从Oracle create table自动递增的,但是PARENTID_DEPARTMENT需要根据上面提到的两列填写ID_DEPARTMENT。 对于没有父字段的字段,应将其留空 也就是说,在Oracle中的Insert into过程中如何实现这一点 我所拥有的: 我需要的是: 谢谢 我假设您的表名为YourTable UPDATE Your

我有一个从表中加载数据的过程,并且有一个子和父关系部门代码和父关系部门代码。因此,我还有两列,它们的ID都是这些列的ID,列ID_DEPARTMENT是从Oracle create table自动递增的,但是PARENTID_DEPARTMENT需要根据上面提到的两列填写ID_DEPARTMENT。 对于没有父字段的字段,应将其留空

也就是说,在Oracle中的Insert into过程中如何实现这一点

我所拥有的:

我需要的是:


谢谢

我假设您的表名为YourTable

UPDATE YourTable t1 
SET t1.PARENTID_DEPARTMENT = (SELECT t2.ID_DEPARTMENT
                              FROM YourTable t2 
                              WHERE t1.PARENT_DEPARTMENT_CODE = t2.DEPARTMENT_CODE)
WHERE t1.PARENT_DEPARTMENT_CODE <> ''
AND EXISTS (SELECT t2.ID_DEPARTMENT
            FROM YourTable t2 
            WHERE t1.PARENT_DEPARTMENT_CODE = t2.DEPARTMENT_CODE)

您不会使用插入来修复数据。你需要更新。请你添加一个你尝试过的例子,提供一个输入和所需输出的例子。我用我所拥有的和我所需要的更新了问题。我还没有尝试任何东西,因为我不知道做什么和如何做。它不起作用,它将所有列PARENTID_DEPARTMENT保留为空,但它没有显示任何错误。如果我只运行这个,它可以在没有WHERE子句的情况下工作:updateyourtable t1 SET t1.PARENTID\u DEPARTMENT=从表t2中选择t2.ID\u DEPARTMENT,其中t1.PARENT\u DEPARTMENT\u CODE=t2.DEPARTMENT\u CODE从屏幕截图中不清楚是否有空空格。我现在假设它们是空的,因此不需要WHERE子句,我只是将子句WHERE t1.PARENT\u DEPARTMENT\u CODE更改为WHERE t1.PARENT\u DEPARTMENT\u CODE不为空,它就像一个符咒一样工作!非常感谢你的时间和努力!