考虑一个包含以下信息的表。子-父关系数据。表格数据:
| 儿童_CD|姓名|负责人_姓名|头_等级|母体_Cd|
| --------------|--------------|--------------|--------------|--------------|
| 二|DEF|血脑屏障|01| 1|
| 三|GHI| ZZZ| 02| 1|
| 四个|肯尼迪国际机场|XXX| 10个|二|
示例:
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;
我们的最终输出需要存储为一个层次结构,如下所示。
| 代码_ID|姓名|负责人_姓名|头_等级|L1_代码|L2_代码|L3_代码|......你好。|L12_代码|R_ID| LVL_CNT|
| --------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|
| 1| ABC| XYZ| 07||||||1| 0|
| 1| ABC| XYZ| 07|二|||||二|1|
| 1| ABC| XYZ| 07|二|四个||||四个|二|
| 1| ABC| XYZ| 07|三|||||三|1|
| 二|DEF|血脑屏障|01||||||二|0|
| 二|DEF|血脑屏障|01|四个|||||四个|1|
| 三|GHI| ZZZ| 02||||||三|0|
| 四个|肯尼迪国际机场|XXX| 10个||||||四个|0|
这里,R_ID ->取层次结构的最后一个CODE_ID。LVL_CNT ->取R_ID相对于主CODE_ID的最大分层计数数。
级别“% 1”的Child_Cd未存储在此处,因为它们没有“% 1”的Parent_Cd。所以我想知道是否有可能使用SQL查询而不是编写一些匿名块来实现结果?
1条答案
按热度按时间uqcuzwp81#