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

ORA-00913:केस का उपयोग करते समय बहुत अधिक मान जब

जब आप case . का उपयोग करते हैं , आपको केवल एक ही रिकॉर्ड वापस करना होगा - 1 से अधिक नहीं। अपना वांछित परिणाम प्राप्त करने के लिए, मैं एक बाएं बाहरी जुड़ाव का उपयोग करूंगा (यह मानते हुए कि आपके पास तालिका 1 से तालिका 2 में शामिल होने का एक तरीका है), लेकिन तालिका 1 पर अपना चेक जोड़ें। स्थिति में शामिल हों ताकि तालिका 2 मान केवल तभी मौजूद रहे जब c1 <> '1'

select
    coalesce(table2.c1, table1.c1) c1,
    coalesce(table2.c2, table1.c2) c2,
    coalesce(table2.c3, table1.c3) c3
from table1
    left outer join table2
       on (your keys here)
           and table1.c1 <> '1' -- This gets table1 if c1 = '1';

यह समाधान तालिका 1 मानता है और तालिका 2 संबंधित है। यदि आप उन्हें संबंधित नहीं कर सकते हैं, तो ऐसा लगता है कि आप एक संघ का उपयोग कर सकते हैं जिसमें आप तालिका 1 से सभी मान लेते हैं जहां सी 1 ='1' और उन सभी तालिका 2 पंक्तियों में संघ। यदि आवश्यक हो, तो आप केवल तालिका 2 मान शामिल कर सकते हैं यदि c1 <> '1'।

select c1, c2, c3 from table1 where c1 = '1'
union all
select c1, c2, c3 from table2; -- where c1 <> '1' -- if necessary

अपडेट करें

अपने नमूना डेटा और अपेक्षित आउटपुट के आधार पर, कृपया ऊपर दी गई दूसरी क्वेरी का उपयोग करें:

select c1, c2, c3 from table1 where c1 = '1'
union all
select c1, c2, c3 from table2 where c1 <> '1'

SQL Fiddle:http://www.sqlfiddle.com/#!4/ 710f0/1/0




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्सेल VBA 64 बिट (DSN कम और tnsnames) का उपयोग करके ODBC (OLEDB नहीं) के लिए Oracle 11g ado कनेक्शन स्ट्रिंग्स

  2. मैं अवांछित खाली एक्सएमएल टैग से कैसे छुटकारा पा सकता हूं?

  3. जुनीट/एचएसक्यूएलडीबी:एचएसक्यूएलडीबी (कोई विशेषाधिकार और/या कोई दोहरी वस्तु नहीं) का उपयोग करते समय ओरेकल सिंटैक्स के साथ त्रुटियों को कैसे प्राप्त करें

  4. ओरेकल REGEXP_SUBSTR | दो सीमांकक के बीच स्ट्रिंग लायें

  5. किसी दिनांक के आधार पर किसी फ़ील्ड के लिए अधिकतम कैसे प्राप्त करें और अन्य फ़ील्ड भी प्राप्त करें?