Menggabungkan Nilai Berdasarkan ID
Dalam manipulasi data, selalunya perlu untuk menggabungkan data daripada berbilang baris menjadi satu rentetan. Ini boleh dicapai melalui penggabungan, di mana rentetan dipasang daripada serpihan yang lebih kecil.
Pernyataan Masalah:
Anda mempunyai jadual yang dipanggil "Keputusan" dengan dua lajur: " Response_ID" dan "Label." Setiap "Response_ID" sepadan dengan berbilang nilai "Label". Matlamat anda ialah untuk menjana jadual baharu dengan satu baris setiap "Response_ID" dan semua nilai "Label" digabungkan menjadi satu rentetan, dipisahkan dengan koma.
Penyelesaian:
Untuk menggabungkan nilai berdasarkan "Response_ID", anda boleh menggunakan SQL berikut pertanyaan:
select T1.Response_ID, stuff((select ','+T2.Label from Results as T2 where T1.Response_ID = T2.Response_ID for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label from Results as T1 group by T1.Response_ID
Penjelasan:
Stuff(): Fungsi ini menyatukan rentetan. Ia memerlukan hujah berikut:
Contoh:
Pertimbangkan perkara berikut jadual:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Understand |
12458 | Was not resolved |
12458 | Did not communicate |
12586 | Spoke too fast |
12587 | Too slow |
Pertanyaan di atas akan menghasilkan output berikut:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Understand,Was not resolved,Did not communicate |
12586 | Spoke too fast |
12587 | Too slow |
Nota: Susunan rentetan bercantum mungkin tidak selalu boleh diramal. Untuk kawalan tepat ke atas pesanan, anda boleh menggunakan pernyataan "ORDER BY" dalam subquery.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Rentetan Tunggal dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!