sql >> Databáze >  >> RDS >> Oracle

Jak agregovat odlišné hodnoty z více seznamů pomocí Oracle JSON_OBJECT &JSON_ARRAYAGG

Použijte jeden DISTINCT dílčí dotaz pro první pár sloupců a poté použijte druhý DISTINCT dílčí dotaz na druhý pár sloupců a JOIN na společném 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 )

Výstupy:




  1. Rozhovor s Orenem Einim z RavenDB o správě databází, analýze a zabezpečení

  2. Funkce vs. uložená procedura na serveru SQL

  3. nelze se připojit k dockeru mysql z místního

  4. Jaký je připojovací řetězec sql, který musím použít pro přístup k localhost\SQLEXPRESS s ověřováním Windows nebo ověřováním SQL?