sql >> Database teknologi >  >> RDS >> Oracle

Tilføj beløb fra to forskellige borde Oracle

Jeg tror, ​​du har brug for en YDRE JOIN.

Du har grundlæggende to datasæt som dette:

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

Så du har brug for en RIGTIG YDRE JOIN

For din SQL ville det være:

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;

(+) angiver tabellen, som også kan være NULL. En anden måde at skrive det på ville være:

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;

Den anden version er i overensstemmelse med SQL-standarden, hvorimod den første (+) kun understøttes af Oracle.




  1. MySQL:Valg af alle kolonner i en tabel plus en kolonne fra samme tabel

  2. Hvordan kan jeg oprette en påkrævet ejet type med Entity Framework Core 3.0

  3. Angiv eksplicit en celles datatype som tekst for talværdier

  4. Sikkerhedskopiering på bordniveau