Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter um valor semelhante no Oracle


Aqui está uma solução que funcionaria para o MySQL. Ele usa uma subconsulta correlacionada na cláusula select para agrupar concatenar Col2 valores. A lógica é que agregamos apenas valores menores ou iguais à linha atual, para um determinado grupo de registros que compartilham o mesmo Col1 valor.
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;



Demonstração



Aqui está a mesma consulta no 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;

Demonstração



Observe que a única mudança real é substituir LISTAGG para GROUP_CONCAT .