sql >> Database >  >> RDS >> Oracle

Voeg bedragen toe uit twee verschillende tabellen Oracle

Ik denk dat je een OUTER JOIN nodig hebt.

Je hebt in wezen twee datasets zoals deze:

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

Je hebt dus een JUISTE OUTER JOIN nodig

Voor uw SQL zou het zijn:

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;

De (+) geeft de tabel aan, die ook NULL kan zijn. Een andere manier om het te schrijven zou zijn:

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;

De tweede versie voldoet aan de SQL-standaard, terwijl de eerste (+) alleen door Oracle wordt ondersteund.




  1. Los het probleem met de SQL Server-database die vastzit in de verdachte modus op een efficiënte manier op

  2. een lijst imploderen voor gebruik in een python MySQLDB IN-clausule

  3. Python-woordenboek invoegen met Psycopg2

  4. Verschil tussen substring in Postgresql