Hier is een oplossing die zou werken voor MySQL. Het gebruikt een gecorreleerde subquery in de select-clausule om samen te groeperen Col2
waarden. De logica is dat we alleen waarden aggregeren die kleiner zijn dan of gelijk zijn aan de huidige rij, voor een bepaalde groep records die dezelfde Col1
delen. waarde.
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;
Hier is dezelfde vraag in 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;
Merk op dat de enige echte verandering het vervangen van LISTAGG
. is voor GROUP_CONCAT
.