我希望我能够解释困扰我的问题。我有以下分层数据集(这只是 34K 记录的子集)
PARENT_ID CHILD_ID EXAM
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
TUDA12982 TUDA12983 N
TUDA12983 TUDA15322 J
TUDA12983 TUDA15323 J
这是树的表示
TUDA12982 N
- TUDA12984 J
-- TUDA999 J
- TUDA12983 N
-- TUDA15322 J
-- TUDA15323 J
我需要的是一个包含exam=N 和底层exam = 'J' 记录的所有记录的列表,这些记录可以嵌套。
select *
from test1
connect by prior child_id = parent_id
start with child_id = 'TUDA12982'
order siblings by child_id;
给我
PARENT_ID CHILD_ID EXAM
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
TUDA12982 TUDA12983 N
TUDA12983 TUDA15323 J
TUDA12983 TUDA15322 J
但我需要的是
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
当我遇到 EXAM = 'N' 记录时,需要停止遍历。
我需要类似“停止”条款的东西。
select *
from test1
connect by prior child_id = parent_id
start with child_id = 'TUDA12982'
stop with exam = 'N'
order siblings by child_id;
如何才能做到这一点?