add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
with persons(id, code, parent_id) as (
select 5953, 'COMPANY', null from dual
union all
select 230928, 'D', 5953 from dual
union all
select 7246, 'C', 230928 from dual
union all
select 243928, 'C.5', 7246 from dual
union all
select 240961, 'C.3', 7246 from dual
union all
select 7287, 'C.4', 7246 from dual
union all
select 7286, 'C.2', 7246 from dual
union all
select 7285, 'C.1', 7246 from dual
)

select p.id children_id,
p.code children_code,
p.parent_id,
prior p.code parent_code,
case when level = 2 then null
when level = 3 then
connect_by_root code
else
substr(sys_connect_by_path(code, '\'),
instr(sys_connect_by_path(code, '\'), '\', 1, 2)+1,
(instr(sys_connect_by_path(code, '\'), '\', 1, 3)) - (instr(sys_connect_by_path(code, '\'), '\', 1, 2)+1))
end grandparent_code,
case when level = 2 then null
when level = 3 then
connect_by_root to_char(id)
else
substr(sys_connect_by_path(id, '\'),
instr(sys_connect_by_path(id, '\'), '\', 1, 2)+1,
CHILDREN_ID CHILDREN_CODE PARENT_ID PARENT_CODE GRANDPARENT_CODE GRANDPARENT_ID
5953 COMPANY null null null null
230928 D 5953 COMPANY null null
7246 C 230928 D COMPANY 5953
7285 C.1 7246 C D 230928
7286 C.2 7246 C D 230928
7287 C.4 7246 C D 230928
240961 C.3 7246 C D 230928
243928 C.5 7246 C D 230928