Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Koneksi string agregat di Oracle 10g

Oracle 11g memiliki fungsi LISTAGG yang rapi yang cukup sesuai dengan yang Anda inginkan, namun karena Anda menggunakan 10g, ini tidak tersedia untuk Anda (kecuali jika Anda memutuskan untuk memutakhirkan).

Jika karena alasan tertentu Anda tidak ingin (atau tidak dapat karena alasan apa pun) meningkatkan ke 11g, saya sarankan untuk melihat beberapa alternatif LISTAGG yang tersedia untuk Anda di 10g.

Anda dapat melihat beberapa alternatif yang diusulkan di sini

Menyesuaikan dengan cepat adaptasi cepat dari salah satu alternatif yang diusulkan agar sesuai dengan skenario kasus Anda:

WITH Q AS
(
    SELECT 'North' POD, 'Rony' NAME FROM DUAL  UNION ALL
    SELECT 'North',     'James'     FROM DUAL  UNION ALL
    SELECT 'North',     'Aby'       FROM DUAL  UNION ALL
    SELECT 'South',     'Sam'       FROM DUAL  UNION ALL  
    SELECT 'South',     'Willy'     FROM DUAL  UNION ALL
    SELECT 'West',      'Mike'      FROM DUAL
)
SELECT   POD,
         RTRIM(
            XMLAGG (XMLELEMENT(e, name||',') ORDER BY name).EXTRACT('//text()'),
            ','
         ) AS name
    FROM q
GROUP BY POD;

Tapi ingat bahwa ini bukan solusi yang sebenarnya karena Anda harus menyesuaikannya dengan tabel Anda (bukan tabel DUAL dummy) dll...

Solusi Anda mungkin akan terlihat seperti:

SELECT   POD,
         RTRIM(
            XMLAGG (XMLELEMENT(E, NAME||',') ORDER BY NAME).EXTRACT('//text()'),
            ','
         ) AS NAME
    FROM tbl1
GROUP BY POD;

Jika Anda ingin mengubah pembatas, Anda dapat mengubahnya dari koma di bagian ini:

(E, NAME||',')

RTRIM ada di sana hanya untuk memotong tanda koma dari akhir string yang digabungkan, jika Anda tidak terganggu dengan tanda koma, Anda dapat menghilangkan fungsi RTRIM untuk menghemat keterbacaan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan ORACLE IIF

  2. Pertanyaan wawancara:Bagaimana cara mendapatkan agregasi 3 bulan terakhir di tingkat kolom?

  3. batasan loader dilanggar saat menautkan kelas javax/xml/namespace/QName dari webapp di Oracle 10g

  4. Oracle tidak dapat menyimpan emoji

  5. Alat untuk menghasilkan diagram database/diagram ER dari database Oracle yang ada?