Oracle
 sql >> база данни >  >> RDS >> Oracle

Добавете суми от две различни таблици Oracle

Мисля, че имате нужда от OUTER JOIN.

По същество имате два набора от данни като този:

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;

Втората версия е в съответствие със стандарта SQL, докато първата (+) се поддържа само от Oracle.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Курсор за цикъл с динамичен SQL-изявление

  2. Oracle - Проблем при създаването на тригер, който актуализира друга таблица

  3. Как да експортирам резултат от SQL заявка във форматиран низ в csv стил, който по-късно ще бъде записан в clob в Oracle?

  4. Oracle:Направете съставен ключ, съдържащ три Foregin ключа

  5. Oracle база данни:разделяне на низ по знаци