已创建SQL表的父子关系



我在SQL上有以下表格(不可变(:

CATEGORY CODE
部分 A
部门 01
集团 011
类别 0111
类别 0112
部门 02
集团 021
类别 0211

我通过创建一个新列来解决这个问题;SECTION+all";(例如:C0411(,因为这种关系是不可能通过编程实现的。

现在,我有所有与nums相关的muy字段(011属于01…(,由于这个新列,部分也相关:

有多少SECTIONS的示例

试试这个。它将为您提供行之间的依赖关系。如果你能发布一个预期的输出,我很乐意调整答案,使其满足你的要求。

with aux (category, code) as(
select 'Section',   'A' from dual union all
select 'Division',  '01' from dual union all
select 'Group', '011' from dual union all
select 'Class', '0111' from dual union all
select 'Class', '0112' from dual union all
select 'Division',  '02' from dual union all
select 'Group', '021' from dual union all
select 'Class', '0211' from dual)
SELECT
a.*,
sys_connect_by_path(code, '>') hier
FROM
aux a
CONNECT BY
PRIOR decode(category, 'Section', 1, 'Division', 2, 'Group',
3, 'Class', 4, 5) = decode(category, 'Section', 1, 'Division', 2, 'Group',
3, 'Class', 4, 5) - 1;

输出:

Category  Code Hier
--------------------
Section A   >A
Division    01  >A>01
Group   011 >A>01>011
Class   0111    >A>01>011>0111
Class   0112    >A>01>011>0112
Class   0211    >A>01>011>0211
Group   021 >A>01>021
Class   0111    >A>01>021>0111
Class   0112    >A>01>021>0112
Class   0211    >A>01>021>0211
Division    02  >A>02
Group   011 >A>02>011
Class   0111    >A>02>011>0111
Class   0112    >A>02>011>0112
Class   0211    >A>02>011>0211
Group   021 >A>02>021
Class   0111    >A>02>021>0111
Class   0112    >A>02>021>0112
Class   0211    >A>02>021>0211
Division    01  >01
Group   011 >01>011
Class   0111    >01>011>0111
Class   0112    >01>011>0112
Class   0211    >01>011>0211
Group   021 >01>021
Class   0111    >01>021>0111
Class   0112    >01>021>0112
Class   0211    >01>021>0211
Division    02  >02
Group   011 >02>011
Class   0111    >02>011>0111
Class   0112    >02>011>0112
Class   0211    >02>011>0211
Group   021 >02>021
Class   0111    >02>021>0111
Class   0112    >02>021>0112
Class   0211    >02>021>0211
Group   011 >011
Class   0111    >011>0111
Class   0112    >011>0112
Class   0211    >011>0211
Group   021 >021
Class   0111    >021>0111
Class   0112    >021>0112
Class   0211    >021>0211
Class   0111    >0111
Class   0112    >0112
Class   0211    >0211

最新更新