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

Oracleでテーブルをそれ自体に結合する

    常にシンプルに保ち、利用可能なすべてのOracle組み込み機能を使用してください。

    SELECT * FROM
    (     
     SELECT FORMAT_NO, FORMAT_CODE, SEQ
      , (CASE WHEN FORMAT_CODE = 'O' THEN LAG(seq, 1, 0) OVER (ORDER BY FORMAT_CODE) END) nn_seq
    FROM 
    (                           
    SELECT 1000 PRODUCT_NO, 1111 FORMAT_NO, 'P' FORMAT_CODE, 0 SEQ FROM dual
    UNION
    SELECT 1000, 1112, 'O', 0 FROM dual
    UNION
    SELECT 1000, 1113, 'H', 546 FROM dual
    )
    ORDER BY 2
    )
    WHERE FORMAT_CODE = 'O'
    

    /

    出力:1112 O 0 546

    上記のクエリでは、最初に順序付けを実行してから、順序と目的の出力に応じて、Oracleに組み込まれているLAG()またはLEAD()を使用する必要があります。



    1. 複数のテーブルへの外部キー

    2. IntelliJIDEAオートコンプリート小文字SQL

    3. KuberneteでAwsEBSを使用してpostgresqlボリュームをマウントする方法

    4. Oracleの最大の関数でNullを処理する