Menjana Senarai Dipisahkan Koma dalam DB2 menggunakan LISTAGG
Panduan ini menunjukkan cara membuat senarai nilai lajur yang dipisahkan koma yang dikumpulkan mengikut lajur lain dalam DB2. Fungsi LISTAGG
adalah kunci untuk mencapai ini.
Senario:
Bayangkan jadual dengan ID
dan Role
lajur, di mana setiap ID
boleh mempunyai berbilang Roles
. Matlamatnya ialah untuk mengeluarkan senarai peranan yang dipisahkan koma untuk setiap ID unik.
Contoh Data:
ID | Role |
---|---|
4555 | 2 |
4555 | 3 |
4555 | 4 |
Output yang Diingini:
<code>4555, 2,3,4</code>
Penyelesaian menggunakan LISTAGG:
FungsiDB2 LISTAGG
menggabungkan nilai dengan cekap dalam kumpulan. Sintaksnya ialah:
<code class="language-sql">LISTAGG(column_name, delimiter) WITHIN GROUP (ORDER BY column_name) OVER (PARTITION BY group_column)</code>
Contoh Pertanyaan:
Mari kita gunakan jadual sampel bernama myTable
dengan lajur id
dan category
:
<code class="language-sql">CREATE TABLE myTable (id INT, category INT); INSERT INTO myTable VALUES (1, 1); INSERT INTO myTable VALUES (2, 2); INSERT INTO myTable VALUES (5, 1); INSERT INTO myTable VALUES (3, 1); INSERT INTO myTable VALUES (4, 2);</code>
Untuk mendapatkan nilai id
yang dipisahkan koma untuk setiap category
:
<code class="language-sql">SELECT category, LISTAGG(id, ', ') WITHIN GROUP (ORDER BY id ASC) AS ids FROM myTable GROUP BY category;</code>
Keputusan:
<code>CATEGORY | IDS ---------+----- 1 | 1, 3, 5 2 | 2, 4</code>
Pertanyaan ini mengumpulkan baris mengikut category
, menyusun nilai id
dalam setiap kumpulan dan kemudian menggunakan LISTAGG
untuk menggabungkannya menjadi rentetan yang dipisahkan koma tunggal. Hasilnya menunjukkan senarai ID yang dipisahkan koma untuk setiap kategori. Pendekatan ini berkesan menyelesaikan masalah menjana senarai dipisahkan koma berdasarkan pengumpulan dalam DB2.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Senarai Dipisahkan Koma dalam DB2 mengikut Kumpulan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!