Zde je řešení, které by fungovalo pro MySQL. Používá korelovaný poddotaz v klauzuli select k seskupení zřetězení Col2
hodnoty. Logika je taková, že agregujeme pouze hodnoty, které jsou menší nebo rovné aktuálnímu řádku, pro danou skupinu záznamů sdílejících stejný Col1
hodnotu.
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;
Zde je stejný dotaz v 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;
Všimněte si, že jedinou skutečnou změnou je nahrazení LISTAGG
pro GROUP_CONCAT
.