Här är en lösning som skulle fungera för MySQL. Den använder en korrelerad underfråga i select-satsen för att gruppera sammanfoga Col2
värden. Logiken är att vi bara aggregerar värden som är mindre än eller lika med den aktuella raden, för en given grupp av poster som delar samma Col1
värde.
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;
Här är samma fråga i 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;
Observera att den enda verkliga förändringen är att ersätta LISTAGG
för GROUP_CONCAT
.