Oracle 根据同一记录的另一列获取记录的列

Oracle get column of a record depending on another column of the same record

我正在尝试根据同一记录的列检索记录。 我的 table 中有层次结构字段(使用 parent 和 grand parent),我想检索具有 parent id 的相同 table 的数据或盛大parent:

SELECT 
O.ID,
O.CODE,
O.LEVEL, 
O.PARENT_ID,
O.PARENT_CODE,
parent.LEVEL AS PARENT_LEVEL,
FROM Organisation_T O
INNER JOIN Organisation_T NT parent on parent.ID = O.ID
WHERE parent.ID = O.ID

但是这个查询不起作用。

这是我的数据:

ID     | CODE    | LEVEL | PARENT_ID
5953   | COMPANY |    1  |  1
230928 | DEP 1   |    2  |  5953
5234   | DEP 2   |    2  |  5953        
7246   | A       |    3  | 5234        
7285   | A.1     |    4  | 7246             
7286   | A.2     |    4  | 7246             
240961 | A.3     |    4  | 7246            
243928 | C       |    3  | 5234 
7287   | D       |    4  | 243928

这里是我想要的:

ID     | CODE    | LEVEL | PARENT_ID | PARENT_CODE | PARENT_LEVEL
5953   | COMPANY |    1  |  1        | null        | null            
230928 | DEP 1   |    2  |  5953     | COMPANY     | 1
5234   | DEP 2   |    2  |  5953     | COMPANY     | 1           
7246   | A       |    3  | 5234      | DEP 2       | 2        
7285   | A.1     |    4  | 7246      | A           | 3               
7286   | A.2     |    4  | 7246      | A           | 3               
240961 | A.3     |    4  | 7246      | A           | 3               
243928 | C       |    3  | 5234      | DEP 2       | 2   
7287   | D       |    4  | 243928    | C           | 3 

         

你能帮我解决这个问题吗?

连接条件使用不正确INNER JOIN Organisation_T NT parent on parent.ID = *O.Parent_ID*

对于 T-SQL 你可以使用,假设示例数据是正确的:

SELECT 
O.ID,
O.Code,
O.Level,
parent.Id as Parent_Id,
parent.Code as Parent_Code,
parent.Level as Parent_Level
FROM Organisation_T O
INNER JOIN Organisation_T parent on parent.ID = O.Parent_Id