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

SQL:インデックス列に従って値を追加する方法

    1レベルの階層のみを想定している場合。複数レベルの階層がある場合、これはより興味深いものになります。

    SELECT A.Value+coalesce(B.Value,0) as Value
         , A.Position
         , A.Relates_to_Position
         , A.Type
    FROM Table A
    LEFT JOIN Table B
      on B.Relates_To_Position = A.Position
    WHERE A. Relate_to_Position is null
    

    これは自己結合であるため、関連するレコードを同じ行に配置します。次に、親行に追加されるため、relate_to_positionに値を持つすべてのレコードを削除します。

    すべてのレコードに関連する値があるわけではないため、LEFT結合を使用し、合体を使用してnullが追加されないようにします。 (coalesceは最初のnull以外の値を取ります)

    常にnullになるため、relates_To_Positionを返す必要がある理由がわかりません。



    1. 90日以上経過した行を削除するには、トリガーを作成します

    2. PHPのstrip_tagsに相当するMySQLクエリとは何ですか?

    3. HibernateのnativeQueryでnullの日付をキャストする方法は?

    4. 正規表現は、文字列内の複数の文字のすべての出現を削除します