【发布时间】:2019-12-12 23:59:28
【问题描述】:
大家好,
让我们假设这样一棵树:
一个 (100) | +--B (50) | | | C(空) | | | E(空) | +--D (30) | 乙 (20)在这棵树中,一个字母代表一个节点的名称,括号中的数字代表一些值。 我知道如何使用分层查询(使用 connect by 等)来爬取所有节点。 但是,如果当前节点的值为空,我想检索(大)父节点的非空值。 因此,这样的查询应该产生如下表:
名称父值 一个空值 100 50 B D 20 CB 50 DA 30 欧共体 50你们中有人知道如何实现吗?
到目前为止的代码:
SELECT NAME, PARENT,
CASE VALUE
WHEN IS NULL THEN (SELECT VALUE FROM SOMETABLE WHERE NAME = PARENT) -- this returns more than one value
ELSE VALUE
END CASE AS VALUE
FROM SOMETABLE
START WITH NAME='A'
CONNECT BY NOCYCLE PRIOR NAME = PARENT
编辑:
您不妨考虑一个带有子引用的表,而不是带有父引用的表:
命名儿童价值 A B 100 100 BC 50 C E 空 E 空 空 数据库 30 B 空值 20应该翻译成:
命名儿童价值 A B 100 100 BC 50 中英 50 E 空值 50 数据库 30 B 空值 20【问题讨论】:
标签: sql oracle hierarchical-data