我有一个递归查询,它确实扩展了这个 Java 猴子的 SQL 知识的极限。现在终于凌晨 1:30,可能是时候开始寻求帮助了。这是 Google 让我失望的少数几次之一。
表格如下:
Parent_ID CHILD_ID QTY
25 26 1
25 27 2
26 28 1
26 29 1
26 30 2
27 31 1
27 32 1
27 33 2
我试图得到以下结果,其中父母将每个孩子都列在他们下面。请注意,数量的级联也是如此。
BASE PARENT_ID CHILD_ID QTY
25 25 26 1
25 25 27 2
25 26 28 1
25 26 29 1
25 26 30 1
25 27 31 2
25 27 32 2
25 27 33 4
26 26 28 1
26 26 29 1
26 26 30 2
27 27 31 1
27 27 32 1
27 27 33 2
我尝试了以下几种偏差均无济于事。
SELECT *
FROM MD_BOMS
START WITH PARENT_ID is not null
CONNECT BY PRIOR CHILD_ID = PARENT_ID
ORDER BY PARENT_ID, CHILD_ID
我正在使用 Oracle 数据库。任何建议、想法等将不胜感激。这似乎很接近,但我不确定它是否是我正在寻找的:检索所有孩子和他们的孩子,递归 SQL
基于(检索所有子项及其子项,递归 SQL)我还尝试了以下方法,但收到“ WITH 子句中查询名称的非法引用”错误:
with cte as (
select CHILD_ID, PARENT_ID, CHILD_ID as head
from MD_BOMS
where PARENT_ID is not null
union all
select ch.CHILD_ID, ch.PARENT_ID, p.head
from MD_BOMS ch
join cte pa
on pa.CHILD_ID = ch.PARENT_ID
)
select *
from cte