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

Oracle JSON_OBJECT और JSON_ARRAYAGG का उपयोग करके एकाधिक सूचियों से अलग-अलग मानों को कैसे एकत्रित करें?

एक DISTINCT का उपयोग करें स्तंभों की पहली जोड़ी के लिए उप-क्वेरी और फिर दूसरे DISTINCT . का उपयोग करें कॉलम की अन्य जोड़ी के लिए उप-क्वेरी और JOIN सामान्य test_col1 . पर :

SELECT JSON_OBJECT (
         'output' VALUE JSON_ARRAYAGG(
           JSON_OBJECT(
             'common'      VALUE c23.test_col1,
             'list'        VALUE c23.list,
             'anotherlist' VALUE c56.anotherlist
           )
         )
       )
FROM   (
         SELECT test_col1,
                JSON_ARRAYAGG(
                  JSON_OBJECT(
                    'key1' VALUE test_col2,
                    'key2' VALUE test_col3
                  )
                ) AS list
         FROM   ( SELECT DISTINCT
                         test_col1, test_col2, test_col3
                  FROM   test_tbl
                  WHERE  test_col4 = 'val7'
         )
         GROUP BY test_col1
       ) c23
       INNER JOIN (
         SELECT test_col1,
                JSON_ARRAYAGG(
                  JSON_OBJECT(
                    'key1' VALUE test_col5,
                    'key2' VALUE test_col6
                  )
                ) AS anotherlist
         FROM   ( SELECT DISTINCT
                         test_col1, test_col5, test_col6
                  FROM   test_tbl
                  WHERE  test_col4 = 'val7'
         )
         GROUP BY test_col1
       ) c56
       ON ( c23.test_col1 = c56.test_col1 )

आउटपुट:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सर्वोत्तम अभ्यास:Oracle क्लाउड के लिए रखरखाव और संवर्द्धन कार्य

  2. एक स्ट्रिंग के वर्ग कोष्ठक को oracle REGEXP_REPLACE फ़ंक्शन के साथ बदलना

  3. लिस्टुनैग फ़ंक्शन?

  4. ADO . का उपयोग करके Oracle से कनेक्ट करना

  5. चरित्र सेट एन्कोडिंग और भंडारण आकार कारक