sql >> Databáze >  >> RDS >> Oracle

Přidejte částky ze dvou různých tabulek Oracle

Myslím, že potřebujete OUTER JOIN.

V podstatě máte dvě datové sady, jako je tato:

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

Takže potřebujete RIGHT OUTER JOIN

Pro vaše SQL by to bylo:

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;

(+) označuje tabulku, která může mít také hodnotu NULL. Jiný způsob, jak to napsat, by byl:

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;

Druhá verze je v souladu se standardem SQL, zatímco první verze (+) je podporována pouze společností Oracle.




  1. Jak přenést soubor výpisu Oracle do instance AWS RDS?

  2. Jak nastavit smyčku WHILE s příkazem IF v MySQL?

  3. Převést interval na minuty

  4. Data MySql zkrácena pro sloupec 'advance' na řádku 1