Aquí hay una solución que funcionaría para MySQL. Utiliza una subconsulta correlacionada en la cláusula de selección para agrupar concatenar juntos Col2
valores. La lógica es que solo agregamos valores que son menores o iguales a la fila actual, para un grupo dado de registros que comparten el mismo Col1
valor.
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;
Aquí está la misma consulta en 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;
Tenga en cuenta que el único cambio real es sustituir LISTAGG
para GROUP_CONCAT
.