Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL рекурсия за намиране на първи екземпляр на ненулева стойност на колона

Не знам от какво точно се нуждаете, но можете да започнете с този израз

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          
; 

и след това филтрирайте нужните записи

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавяте и премахвате xml тагове на съществуващи данни в колона xmltype в oracle

  2. Как да заявя име на база данни в Oracle SQL Developer?

  3. Как да използвам една схема от множество потребители без предварително фиксиране на името на схемата преди обектите?

  4. Как да ДОБАВИТЕ ИМЕ НА ОГРАНИЧЕНИЕ към вече СЪЩЕСТВУВАЩО ОГРАНИЧЕНИЕ

  5. Таблицата не съществува при използване на EF 6 и Oracle.ManagedDataAccess