sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL-rekursion for at finde første forekomst af ikke-nul kolonneværdi

Jeg ved ikke, hvad du præcist har brug for, men du kan starte med denne udtalelse

select cid, iid, level, connect_by_root(target_cid), connect_by_root(target_iid)
from tab
connect by    prior cid = child_cid
          AND prior iid = child_iid
          AND target_cid is null          
; 

og filtrer derefter de poster, du har brug for

select *
from 
(
select cid, iid, level, connect_by_root(target_cid) as target_cid, connect_by_root(target_iid) as target_iid
from tab
connect by    prior cid = child_cid
          AND prior iid = child_iid
          AND target_cid is null          
)
where target_cid is not null
;          

    CID IID TARGET_CID TARGET_IID
    ++++++++++++++++++++++++++++++
    112 1     116         1
    112 2     116         1
    112 3     116         2
    112 4     100         3
    112 101   116         101
    112 102   116         101
    112 103   116         102
    112 201   116         201
    112 202   116         201
    112 203   116         202
    112 301   116         301
    112 302   116         301
    112 302   116         302



  1. Henter placeringen af ​​filen tnsnames.ora efter kode

  2. jqGrid Act Strange Genindlæsning af data efter indsættelse og opdatering

  3. sql geografi til dbgeography?

  4. Søg efter matchende tags (Similarity Search) med MySQL og Constraints