Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur dalam Kumpulan DB2 dengan Pemisah Koma?

Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur dalam Kumpulan DB2 dengan Pemisah Koma?

DDD
Lepaskan: 2025-01-09 14:51:42
asal
746 orang telah melayarinya

How Can I Concatenate Column Values in DB2 Groups with Comma Separators?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Pertanyaan ini akan menghasilkan output berikut:

<code>CATEGORY  IDS
--------- -----
1         1, 5, 3
2         2, 4</code>
Salin selepas log masuk

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>
Salin selepas log masuk

Ini akan menghasilkan output berikut:

<code>CATEGORY  IDS
--------- -----
1         1, 3, 5
2         2, 4</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan