Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir une valeur similaire dans Oracle

Voici une solution qui fonctionnerait pour MySQL. Il utilise une sous-requête corrélée dans la clause select pour regrouper la concaténation Col2 valeurs. La logique est que nous agrégeons uniquement les valeurs inférieures ou égales à la ligne actuelle, pour un groupe donné d'enregistrements partageant le même Col1 valeur.

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;

Démo

Voici la même requête dans 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;

Démo

Notez que le seul vrai changement est de remplacer LISTAGG pour GROUP_CONCAT .