Если вы хотите проверить только ребенок строки для каждого родителя, то вы можете использовать этот запрос:
SQLFiddle demo
with st as (
select subject_uid suid, parent_subject_uid puid,
nvl((select 1 from subject_item si
where si.subject_uid = st.subject_uid and active_date<sysdate), 0) it
from subject_table st)
select suid, puid, it from st
where it=1 or exists (select 1 from st st2 where it=1 and puid=st.suid)
Но если вы хотите выполнить проверку для детей, внуков (и так далее) то вам нужна иерархическая подзапрос:
SQLFiddle demo
with st as (
select subject_uid suid, parent_subject_uid puid,
nvl((select 1 from subject_item si
where si.subject_uid = st.subject_uid and active_date<sysdate), 0) it
from subject_table st),
sh as (
select suid, puid, it, connect_by_root(suid) root from st
connect by prior suid= puid)
select suid, puid, it from st
where it=1 or exists (select 1 from sh where it=1 and root=st.suid)
В моем примере строка с id = 2 не имеет элементов, его дети тоже, но внук соответствует критериям, поэтому второй запрос показывает id = 2 тоже.
Какие вопросы вы пытались до сих пор? – MT0