Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

buat tampilan oracle berdasarkan perbandingan data antara dua tabel database

Anda membutuhkan LEAST() fungsi bersama dengan 3 subkueri yang digabungkan dengan UNION klausa. Dua dari subkueri harus berisi FULL JOIN antar tabel :

CREATE VIEW V_MEMBER_FUND AS    
SELECT i.fund_isin,
       i.member_descr,
       LEAST(i.member_ratio, t.member_ratio) AS member_ratio,
       i.allocationassettype
  FROM IS_ID i
  JOIN IS_ID_TST t
    ON t.fund_isin = i.fund_isin
   AND t.member_descr = i.member_descr
 WHERE i.member_descr = 'O'
UNION
SELECT LEAST(NVL(i.fund_isin,t.fund_isin),NVL(t.fund_isin,i.fund_isin)) AS fund_isin,
       LEAST(NVL(i.member_descr,t.member_descr),NVL(t.member_descr,i.member_descr)) AS member_descr,
       LEAST(NVL(i.member_ratio,t.member_ratio),NVL(t.member_ratio,i.member_ratio)) AS member_ratio,
       LEAST(NVL(i.allocationassettype,t.allocationassettype),NVL(t.allocationassettype,i.allocationassettype)) AS allocationassettype
  FROM IS_ID i
  FULL JOIN IS_ID_TST t
    ON t.fund_isin = i.fund_isin
 WHERE (i.member_descr = 'O' OR t.member_descr = 'O' )
   AND ( t.fund_isin IS NULL OR i.fund_isin IS NULL )
UNION
SELECT t.fund_isin,
       t.member_descr,
       t.member_ratio,
       t.allocationassettype
  FROM IS_ID i
 RIGHT JOIN IS_ID_TST t
    ON t.fund_isin = i.fund_isin
   AND t.member_descr = i.member_descr
 WHERE (NVL(i.member_descr,'XYZ') != 'O' OR NVL(t.member_descr,'XYZ') != 'O' )
   AND t.fund_isin IS NOT NULL  

untuk pertama case :Hanya perlu mengembalikan nilai minimum dalam hal member_ratio dengan i.member_descr = 'O' pertandingan.

untuk kedua case :Dua Arah(FULL JOIN ) logika dikatakan dibutuhkan

untuk ketiga case :gabungan luar masing-masing pada posisi IS_ID_TST tabel (dalam kasus saat ini RIGHT JOIN ) diperlukan bersama dengan nilai yang tidak setara dari member_desct dengan nilai 'O' (bahkan nilai NULL harus dihilangkan, dan NVL() fungsi ditambahkan untuk tujuan ini )

Dan semua subkueri yang ditentukan dalam tiga kasus harus digabungkan dengan UNION untuk memberikan kombinasi baris-bijaksana termasuk penghapusan baris berulang.

Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tutorial Oracle sql:Pernyataan Sql Dasar

  2. Membuat Layar Login Kustom Di Oracle Forms 10g

  3. Nama Oracle TNS tidak muncul saat menambahkan koneksi baru ke SQL Developer

  4. Cara Menghapus catatan berdasarkan baris Sebelumnya dan Berikutnya dan menetapkan tanggal berdasarkan kondisi tertentu

  5. bagaimana cara menampilkan hanya waktu di oracle?