All Products
Search
Document Center

MaxCompute:Dokumen

Last Updated:Mar 26, 2026

Gunakan MaxCompute SQL untuk menggabungkan nilai dari beberapa baris menjadi satu baris. Dua pola berikut mencakup sebagian besar kasus penggunaan:

  • String concatenation: gunakan wm_concat untuk menggabungkan nilai dari beberapa baris menjadi satu string yang dipisahkan koma, dikelompokkan berdasarkan kolom tertentu.

  • Conditional aggregation: gunakan CASE WHEN dengan SUM untuk menghitung atau menjumlahkan nilai berdasarkan kategori di seluruh baris—pendekatan standar SQL untuk mengubah tabel sempit menjadi tabel lebar.

Data contoh

Contoh pada halaman ini menggunakan tabel bernama students:

classgendername
1MLiLei
1FHanMM
1MJim
1FHanMM
2FKate
2MPeter

Menggabungkan nilai baris menjadi string

Gunakan wm_concat untuk mengagregasi nilai dari beberapa baris menjadi satu string, dikelompokkan berdasarkan kolom tertentu.

Sintaks:

wm_concat([DISTINCT] '<delimiter>', <column>)
ParameterWajibDeskripsi
DISTINCTTidakMenghapus nilai duplikat sebelum penggabungan
<delimiter>YaString pemisah yang ditempatkan di antara nilai-nilai yang digabungkan.
<column>YaKolom yang nilainya akan digabungkan.

Untuk referensi lengkap fungsi ini, lihat Aggregate functions.

Penggabungan dasar

Kelompokkan nama berdasarkan class, lalu gabungkan semua nilainya dengan koma:

SELECT class, wm_concat(',', name) AS names
FROM students
GROUP BY class;
classnames
1LiLei,HanMM,Jim,HanMM
2Kate,Peter

Penggabungan dengan deduplikasi

Tambahkan DISTINCT untuk menghapus nilai duplikat sebelum penggabungan:

SELECT class, wm_concat(DISTINCT ',', name) AS names
FROM students
GROUP BY class;
classnames
1LiLei,HanMM,Jim
2Kate,Peter

Menghitung nilai berdasarkan kategori (conditional aggregation)

Gunakan CASE WHEN dengan SUM untuk memutar nilai baris menjadi kolom—menghitung jumlah baris yang memenuhi setiap kondisi per kelompok.

Pernyataan berikut menghitung jumlah siswa laki-laki dan perempuan di setiap class:

SELECT
  class,
  SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS cnt_m,
  SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS cnt_f
FROM students
GROUP BY class;
classcnt_mcnt_f
122
211

Untuk menambahkan lebih banyak kategori, sertakan ekspresi tambahan SUM(CASE WHEN ...) dalam klausa SELECT.