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

2つの異なるテーブルから金額を追加するOracle

    アウタージョインが必要だと思います。

    基本的に、次のような2つのデータセットがあります。

    Set1: ID VAL     Set2: ID Val    => Expected Result:
           1  10            1   5       1  15
           2  20                        2  20
           3  30                        3  30
    

    したがって、正しい外部結合が必要です

    SQLの場合は次のようになります:

    select  e.sol_id
           ,(sum(CASE WHEN e.INTEREST_IND = 'D' THEN e.AMOUNT_IN_LCY ELSE 0 END)
              - sum(CASE WHEN e.INTEREST_IND = 'C' THEN e.AMOUNT_IN_LCY ELSE 0 END)
              + sum(f.AMOUNT_IN_LCY)
            ) as Difference 
      from  tbaadm.INTEREST_DETAILS e
           ,tbaadm.CHARGE_DETAILS   f
     where  E.SOL_ID = F.SOL_ID (+)
     group  by e.sol_id, f.sol_id;
    

    (+)はテーブルを示し、NULLにすることもできます。それを書く別の方法は次のようになります:

    select  e.sol_id
           ,(sum(CASE WHEN e.INTEREST_IND = 'D' THEN e.AMOUNT_IN_LCY ELSE 0 END)
              - sum(CASE WHEN e.INTEREST_IND = 'C' THEN e.AMOUNT_IN_LCY ELSE 0 END)
              + sum(f.AMOUNT_IN_LCY)
            ) as Difference 
      from  tbaadm.INTEREST_DETAILS e
            LEFT OUTER JOIN
              tbaadm.CHARGE_DETAILS f
            ON E.SOL_ID = F.SOL_ID
     group  by e.sol_id, f.sol_id;
    

    2番目のバージョンはSQL標準に準拠していますが、最初のバージョン(+)はOracleでのみサポートされています。




    1. 無効な識別子SQL

    2. postgres json列のネストされた配列をクエリする方法は?

    3. MyISAMとInnoDBの違いは何ですか?

    4. Homebrewを使用して[メール保護]のKegインストールにPostgisをインストールするにはどうすればよいですか?