Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách tổng hợp các giá trị riêng biệt từ nhiều danh sách bằng Oracle JSON_OBJECT &JSON_ARRAYAGG

Sử dụng một DISTINCT truy vấn phụ cho cặp cột đầu tiên và sau đó sử dụng DISTINCT thứ hai truy vấn phụ cho cặp cột khác và JOIN trên test_col1 chung :

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 )

Kết quả đầu ra:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các biến trong tập lệnh TOAD

  2. Làm thế nào để tối ưu hóa truy vấn với hơn 10 lần tham gia?

  3. Kết nối với cơ sở dữ liệu Oracle 10g bằng Microsoft ODBC cho Oracle

  4. Sử dụng kết quả Thu thập hàng loạt trong một truy vấn chọn lọc mà không có con trỏ

  5. Cách bỏ Oracle LOB