Saya menemukan cara untuk menggabungkan string dari baris yang berbeda menjadi satu baris. Saya ingin melakukan ini di banyak tempat berbeda, jadi memiliki fungsi untuk memfasilitasi ini akan menyenangkan. Saya sudah mencoba solusi menggunakan COALESCE
dan FOR XML
, tetapi solusi tersebut tidak cocok untuk saya.
Agregasi string akan melakukan sesuatu seperti ini:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
Saya telah melihat fungsi agregat yang ditentukan CLR sebagai pengganti COALESCE
dan FOR XML
, tetapi tampaknya SQL Azure tidak mendukung hal-hal yang ditentukan CLR, yang menyebalkan bagi saya karena saya tahu bisa menggunakannya akan menyelesaikan banyak hal. masalah bagi saya.
Apakah ada solusi yang mungkin, atau metode optimal serupa (yang mungkin tidak seoptimal CLR, tapi hei saya akan mengambil apa yang bisa saya dapatkan) yang dapat saya gunakan untuk mengumpulkan barang-barang saya?
for xml
menunjukkan penggunaan 25% dalam hal kinerja kueri (sebagian besar kueri!)
for xml path
kueri. Beberapa lebih cepat dari yang lain. Itu bisa tergantung pada data Anda tetapi yang menggunakan distinct
menurut pengalaman saya lebih lambat daripada menggunakan group by
. Dan jika Anda menggunakan .value('.', nvarchar(max))
untuk mendapatkan nilai gabungan Anda harus mengubahnya menjadi.value('./text()[1]', nvarchar(max))
for xml
tidak berhasil untuk Anda?