Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Đệ quy Oracle SQL để tìm trường hợp đầu tiên của giá trị cột không null

Tôi không biết chính xác bạn cần gì, nhưng bạn có thể bắt đầu với trạng thái tihs

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          
; 

và sau đó lọc các mục nhập bạn cần

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. Lỗi SQL:ORA-12899:giá trị quá lớn cho cột

  2. Oracle động DESC và ASC theo thứ tự

  3. Lỗi Xmlparserv2 khi ứng dụng được triển khai trong jboss, Cài đặt mô-đun ojdbc Oracle trong ứng dụng web JBoss dành cho Java

  4. Nhận thêm hàng - Sau khi nối 3 bảng bằng cách sử dụng Nối trái

  5. Truy vấn trong Oracle để chọn với truy vấn con