考虑一个包含以下信息的表格。 父子关系数据。 表格数据:
Child_Cd | 名称 | Head_Name | Head_Rank | Parent_Cd |
---|---|---|---|---|
2 | DEF | BBB | 01 | 1 |
3 | GHI | ZZZ | 02 | 1 |
4 | JFK | XXX | 10 | 2 |
示例:
CREATE TABLE TEST_01
( CHILD_CD NUMBER(5) NOT NULL,
NAME VARCHAR2(3),
HEAD_NAME VARCHAR2(3),
HEAD_RANK VARCHAR2(2),
PARENT_CD NUMBER(5) NOT NULL
);
insert into test_01 (CHILD_CD, NAME, HEAD_NAME, HEAD_RANK, PARENT_CD)
values (2, 'DEF', 'BBB', '01', 1);
insert into test_01 (CHILD_CD, NAME, HEAD_NAME, HEAD_RANK, PARENT_CD)
values (3, 'GHI', 'ZZZ', '02', 1);
insert into test_01 (CHILD_CD, NAME, HEAD_NAME, HEAD_RANK, PARENT_CD)
values (4, 'JFK', 'XXX', '10', 2);
commit;
我们的最终输出需要存储为如下所示的层次结构。
Code_ID | 名称 | Head_Name | Head_Rank | L1_Code | L2_Code | L3_Code | .. | L12_Code | R_ID | LVL_CNT |
---|---|---|---|---|---|---|---|---|---|---|
1 | ABC | XYZ | 07 | 1 | 0 | |||||
1 | ABC | XYZ | 07 | 2 | 2 | 1 | ||||
1 | ABC | XYZ | 07 | 2 | 4 | 4 | 2 | |||
1 | ABC | XYZ | 07 | 3 | 3 | 1 | ||||
2 | DEF | BBB | 01 | 2 | 0 | |||||
2 | DEF | BBB | 01 | 4 | 4 | 1 | ||||
3 | GHI | ZZZ | 02 | 3 | 0 | |||||
4 | JFK | XXX | 10 | 4 | 0 |
这里,R_ID -> 获取层次结构的最后一个 CODE_ID。 LVL_CNT -> 取 R_ID 相对于主 CODE_ID 的最大层级计数。
级别“1”的 Child_Cd 未存储在此处,因为它们没有“1”的 Parent_Cd。所以我想知道是否可以使用 SQL 查询而不是编写一些匿名块来实现结果?