Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur dalam Kumpulan DB2 dengan Pemisah Koma?
DB2: Hasilkan nilai kumpulan dipisahkan koma
Artikel ini meneroka sama ada terdapat fungsi terbina dalam dalam DB2 SQL yang boleh menggabungkan nilai lajur dalam kumpulan dan memisahkannya dengan koma. Keperluan untuk fungsi ini timbul dalam situasi di mana berbilang baris berkongsi pengecam kumpulan yang sama (cth. ID dalam contoh) tetapi lajur lain mempunyai nilai yang berbeza (cth. Peranan). Output yang dikehendaki adalah untuk menggabungkan nilai yang dikaitkan dengan setiap kumpulan ke dalam senarai yang dipisahkan koma.
Penyelesaian: Gunakan fungsi LISTAGG
DB2 LUW 9.7 memperkenalkan fungsi LISTAGG, yang boleh menggabungkan nilai lajur yang ditentukan dalam setiap kumpulan, dipisahkan oleh pembatas yang ditentukan pengguna. Fungsi ini boleh digunakan untuk mencapai output dipisahkan koma yang dikehendaki.
Contoh:
Pertimbangkan myTable berikut dengan lajur id dan kategori:
<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 menjana senarai nilai id yang dipisahkan koma dalam setiap kumpulan kategori, anda boleh menggunakan pertanyaan berikut:
<code class="language-sql">select category, LISTAGG(id, ', ') as ids from myTable group by category;</code>
Pertanyaan ini akan menghasilkan output berikut:
<code>CATEGORY IDS --------- ----- 1 1, 5, 3 2 2, 4</code>
Ciri tambahan:
Fungsi LISTAGG membenarkan kawalan tambahan ke atas susunan nilai yang disambungkan dalam setiap kumpulan. Anda boleh mengawal susunan nilai sebelum menyertai dengan menyatakan klausa ORDER BY dalam fungsi LISTAGG.
Sebagai contoh, pertanyaan berikut akan mengisih nilai id dalam setiap kumpulan kategori dalam tertib menaik:
<code class="language-sql">select category, LISTAGG(id, ', ') WITHIN GROUP(ORDER BY id ASC) as ids from myTable group by category;</code>
Ini akan menghasilkan output berikut:
<code>CATEGORY IDS --------- ----- 1 1, 3, 5 2 2, 4</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur dalam Kumpulan DB2 dengan Pemisah Koma?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!