ORACLE 单字段的父子层次关系如何实现累积

表1中只能通过编码体现父子关系,两个表关联查询数量(SL)怎么实现父节点自动求和。

img

img

表1:a
表2:b

  1. a表拆分父子关系字段,看字段的数据认为是 A 是父级,A+数字是子集
select *,regexp_substr(DM,'[A-Za-z]+') as root,regexp_substr(DM,'[0-9]+') as node from a;

预期格式:

IDDMMCROOTNODE
1561A前端Anull
7865A1前端A1
  1. 关联a表和b表
    select *,regexp_substr(DM,'[A-Za-z]+') as root,regexp_substr(DM,'[0-9]+') as node from a
    left join b
    on a.ID = b.ID
    
  1. 去掉父节点=,分组求和 ,完整SQL 类似下面的
select regexp_substr(DM,'[A-Za-z]+') as root,sum(b.SL) as SL 
from a
left join b
on a.ID = b.ID
where regexp_substr(a.DM,'[0-9]+') is not null
group by regexp_substr(DM,'[A-Za-z]+')

ps:没有oracle 纯手打 没有实践 不知道对不对

2个表是通过那个字段进行关联呢?没发现有关联字段呢?2个表的ID相同吗?
select id,sum(sl) from 表2 group by ID