Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dodaj kwoty z dwóch różnych tabel Oracle

Myślę, że potrzebujesz ZEWNĘTRZNEGO DOŁĄCZENIA.

Zasadniczo masz dwa takie zbiory danych:

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

Potrzebujesz więc ODPOWIEDNIEGO POŁĄCZENIA ZEWNĘTRZNEGO

Dla twojego SQL byłoby to:

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;

(+) oznacza tabelę, która również może mieć wartość NULL. Innym sposobem napisania byłoby:

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;

Druga wersja jest zgodna ze standardem SQL, podczas gdy pierwsza (+) jest obsługiwana tylko przez 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. c# wczytaj tabelę SQL (ze znakami specjalnymi) do DataSet

  2. Jak zmienić wartość początkową sekwencji db?

  3. Uzyskaj dostęp do usługi sieciowej z procedury składowanej Oracle

  4. Wyszukaj dane, które nie są tekstem w języku angielskim

  5. Baza danych Entity Framework — najpierw z bazą danych Oracle