Вот решение, которое будет работать для MySQL.Он использует коррелированный подзапрос в предложении select, чтобы сгруппировать объединенные значения Col2
.Логика состоит в том, что мы агрегируем только значения, которые меньше или равны текущей строке, для данной группы записей, имеющих одно и то же значение Col1
.
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;

Демонстрация
Этот же запрос в 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;
Демонстрация
Обратите внимание, что единственное реальное изменение - это замена LISTAGG
на GROUP_CONCAT
.