一尘不染

如何获取Oracle树层次结构中所有父项的子项总数?

sql

我有一个Oracle Tree层次结构,该结构基本上类似于称为MY_TABLE的下表

(LINK_ID,
 PARENT_LINK_ID,
 STEP_ID )

在MY_TABLE中包含以下示例数据:

LINK_ID     PARENT_LINK_ID      STEP_ID
-----------------------------------------------
A           NULL                0
B           NULL                0
AA          A                   1
AB          A                   1
AAA         AA                  2
BB          B                   1
BBB         BB                  2
BBBA        BBB                 3
BBBB        BBB                 3

根据上面的示例数据,我需要生成一个报告,该报告基本上返回两个父链接ID(仅顶层)的所有子级的总行数,也就是说,我需要生成一个返回以下内容的SQL查询信息,即:

PARENT  RESULT COUNT
----------------------------
A       3
B       4

因此,我需要汇总属于所有(父)链接ID的子级总数,其中LINK_ID的PARENT_LINK_ID为NULL


阅读 129

收藏
2021-05-16

共1个答案

一尘不染

我认为是这样的:

select link, count(*)-1 as "RESULT COUNT"
  from (
    select connect_by_root(link_id) link
    from my_table
    connect by nocycle parent_link_id = prior link_id
    start with parent_link_id is null)
group by link
order by 1 asc
2021-05-16