我正在使用的数据被测序如下:
示例
我想知道的是:
想要
我从查询中获得的是此(带有实际数据的实际查询,已发布在本文的末尾:
:获取
这是我现在拥有的代码,我觉得它接近给我我想要的。
选择 *选择不同的ID ,Idnew ,connect_by_root怠速 ,connect_by_isleaf" isleaf" ,connect_by_iscycle iScycle ,级别seq_order 来自Mytable TBL1 由Nocycle IDNew连接=先验ID 从不存在开始(从mytable TBL2中选择1个 其中tbl2.itemloadid = tbl.itemloadidnew))ABCABC.Idlast订购,seq_order desc
我从此代码中获得的输出是:
输出
我如何确保序列的第一个值解释为根(而不是今天的叶子)?据我了解,如果它们被解释为根,我可以用id_first打印一列,而不是我今天拥有的id_last。
帮助您非常感谢!:)
您必须反转connect by
子句:
select t.*, connect_by_root(id) id_first
from mytable t
start with not exists (select 1 from mytable x where x.id_new = t.id)
connect by id = prior id_new
dbfiddle demo