Berikut adalah solusi yang akan bekerja untuk MySQL. Ia menggunakan subquery yang berkorelasi dalam klausa pilih untuk mengelompokkan gabungan bersama Col2
nilai-nilai. Logikanya adalah bahwa kita hanya menggabungkan nilai yang kurang dari atau sama dengan baris saat ini, untuk grup record tertentu yang berbagi Col1
yang sama nilai.
SELECT
Col1,
(SELECT GROUP_CONCAT(t2.Col2 ORDER BY t2.Col2) FROM yourTable t2
WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
t1.Col1,
t1.Col2;
Ini adalah kueri yang sama di Oracle:
SELECT
Col1,
(SELECT LISTAGG(t2.Col2, ',') WITHIN GROUP (ORDER BY t2.Col2) FROM yourTable t2
WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
t1.Col1,
t1.Col2;
Perhatikan bahwa satu-satunya perubahan nyata adalah mengganti LISTAGG
untuk GROUP_CONCAT
.