sql >> データベース >  >> RDS >> Oracle

null以外の列値の最初のインスタンスを検索するためのOracleSQL再帰

    正確に何が必要かわかりませんが、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          
    ; 
    

    次に、必要なエントリをフィルタリングします

    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. MariaDBサーバーでのMyRocksストレージエンジンの使用

    2. Microsoft SQL Serverによるアクセス–SSISを使用した大規模なデータセットのインポート

    3. MySQLWorkbenchをAmazonRDSに接続する方法は?

    4. SQLiteにデータを挿入するときに、NULL値を列のデフォルト値に変換する