Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

निम्नलिखित परिणाम प्राप्त करने के लिए दो तालिकाओं में कैसे शामिल हों?

आप दूसरी तालिका में सब कुछ चाहते हैं और फिर पंक्तियों से मेल खाते हैं या नया group0 पहली तालिका में।

मुझे लगता है कि यह join . है तर्क:

select coalesce(t1.group0, t2.group0) as group0, 
       coalesce(t1.group1, t2.group1) as group1,
       t1.sum_a, t2.sum_b
from table1 t1 full outer join
     table2 t2
     on t1.group0 = t2.group0 
where (t2.group0 is not null and (t1.group1 = t2.group1 or t1.group0 is null)) or
      t2.group0 is null;

union all . के साथ यह तर्क आसान है :

select t2.group0, t2.group1, t1.sum_a, t2.sum_b
from table2 t2 left join
     table1 t1
     on t2.group0 = t1.group0 and t2.group1 = t1.group1
union all
select t1.group1, t1.group1, t1.suma, 0
from table1
where not exists (select 1 from table2 t2 where t2.group0 = t1.group0);

संपादित करें:

संशोधित प्रश्न मूल से काफी अलग है। यह एक आसान full outer join है :

select coalesce(t1.group0, t2.group0) as group0, 
       coalesce(t1.group1, t2.group1) as group1,
       coalesce(t1.sum_a, 0) as sum_a, coalesce(t2.sum_b, 0) as sum_b
from table1 t1 full outer join
     table2 t2
     on t1.group0 = t2.group0  and t1.group1 = t2.group1;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. घातक त्रुटि:अपरिभाषित फ़ंक्शन पर कॉल करें oci_connect ()

  2. SQL डेवलपर में एक चर के मान को प्रिंट करना

  3. sqlplus के साथ शेल स्क्रिप्ट और पासवर्ड पर विशेष वर्ण

  4. X64 में WebDev.WebServer.exe (VS वेब सर्वर) का उपयोग कैसे करें?

  5. 'के कारण:java.sql.SQLException:स्ट्रीम पहले ही बंद कर दिया गया है' से बचने के लिए कस्टम प्रकार हाइबरनेट करें