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

चयन पर अलग-अलग मामलों के लिए ओरेकल एक ही उपनाम लौटाता है

मान लें कि आपकी सबक्वायरी को पहले से ही सही मान वापस मिल गया है, और आप केवल यह पूछ रहे हैं कि एक ही कॉलम में दोनों 'लेख' मान कैसे प्राप्त करें, आपको बस सबक्वेरी को दूसरे when में ले जाना है। पहले case के भीतर जांचें अभिव्यक्ति, इसके बजाय अपने स्वयं के कॉलम के रूप में:

SELECT
     tbl.parent,
     list.list_value,
     tbl.values_column,
     CASE
         WHEN list.list_value = 'Article' THEN tbl.values_column
         WHEN list.list_value = 'Paragraph' THEN (
             SELECT
                 values_column
             FROM
                 pro_table
             WHERE
                 pro_table.id_pro_table = tbl.parent
         )
     END AS article,
     CASE
         WHEN list.list_value = 'Paragraph' THEN tbl.values_column
     END AS paragraph
 FROM
     pro_table tbl 
     LEFT JOIN list ON list.id_list = tbl.id_t_list

आप सबक्वेरी को लेफ्ट जॉइन के साथ उसी टेबल पर वापस ला सकते हैं और परिणामों को जोड़ सकते हैं:

SELECT
     tbl.parent,
     list.list_value,
     tbl.values_column,
     COALESCE (
         CASE
             WHEN list.list_value = 'Article' THEN tbl.values_column
         END,
         tbl2.values_column
     ) AS article,
     CASE
         WHEN list.list_value = 'Paragraph' THEN tbl.values_column
     END AS paragraph
 FROM
     pro_table tbl 
     LEFT JOIN list ON list.id_list = tbl.id_t_list
     LEFT JOIN pro_table tbl2 ON tbl2.id_pro_table = tbl.parent

... लेकिन यह पदानुक्रम के बारे में कुछ धारणाएँ बना रहा है, इसलिए आपको शायद सूची प्रकार के आधार पर जुड़ने को कसने की आवश्यकता है।

db<>fiddle आपके द्वारा दिखाई गई छह पंक्तियों के बीच आविष्कृत संबंधों के साथ, क्योंकि हमारे पास वास्तविक आईडी नहीं हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाग्रिप में सर्वर आउटपुट कैसे सेट करें

  2. UUID अधिकतम वर्ण लंबाई

  3. Oracle निर्भरता के बिना जावा में Oracle रेफ कर्सर का उपयोग करना

  4. जावा कोड का उपयोग करके नमूना हेलोवर्ड func को कैसे कॉल करें

  5. Oracle में विभाजित स्ट्रिंग क्रम में regexp_substr के साथ