Replika Fungsi GROUP_CONCAT dengan T-SQL

Soeleman 25 Agustus 2017

Replika Fungsi GROUP_CONCAT dengan T-SQL

Kalau melihat data dibawah, tentu dalam beberapa kesempatan kita diharapkan untuk mengabungkan sebuah column dari rows menjadi satu column. Bisa terjadi pada satu table atau master-child. Di data dibawah, kita ingin mengabungkan data Name dengan group Country.

alt text

Seperti apa? Setelah kita menjalankan query-nya, maka ia akan menjadi seperti dibawah.

alt text

MySQL

Pada MySQL sudah memilik build-in fungsi untuk tujuan ini. Yup, fungsi itu adalah Group_Concat. Fungsi ini memiliki beberapa variasi dalam penggunaannya dan untuk mendapatkan hasil seperti di atas cukup mengirimkan column namanya saja. Seperti SQL di bawah

alt text

Microsoft SQL Server

Fungsi Group_Concat seperti ini tidak ada di sql server atau T-SQL. Tapi kita bisa menreplika fungsi itu dengan STUFF dan dikombinasikan dengan FOR XML. Seperti pada SQL di bawah

alt text

STUFF adalah fungsi String yang di gunakan untuk menganti sebuah karakter dari String yang di hasilkan oleh RowSet yang di jadikan XML dengan FOR XML. Cara ini adalah cara yang paling mudah untuk menreplika fungsi Group_Concat itu. Masih ada beberapa cara lainnya, tapi cara ini paling mudah dan umum di gunakan.

Penutup

Build-in fungsi yang ada disebuah database belum tentu diimplement pada database lainnya. Dalam hal ini yang dimaksud adalah fungsi Group_Concat yang ada di MySQL. Walau T-SQL tidak memiliki fungsi ini, tapi kita tetap bisa mendapatkan hasil seperti fungsi itu dengan menggunakan fungsi lainnya untuk mencapai tujuan kita.

Referensi

Perhatian! Code yang ditampilkan dalam tulisan ini merupakan ilustrasi dari yang ingin dipaparkan dan bukan production ready code. Sudah banyak kejadian karena asal meng-copy-and-paste tanpa mengerti code yang diambil itu ke dalam production. Selain itu perlu ada tambahan code dan test sebelum siap untuk digunakan secara utuh.