sql >> Base de Datos >  >> RDS >> Mysql

Cómo obtener un valor similar en Oracle

Aquí hay una solución que funcionaría para MySQL. Utiliza una subconsulta correlacionada en la cláusula de selección para agrupar concatenar juntos Col2 valores. La lógica es que solo agregamos valores que son menores o iguales a la fila actual, para un grupo dado de registros que comparten el mismo 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;

Demostración

Aquí está la misma consulta en 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;

Demostración

Tenga en cuenta que el único cambio real es sustituir LISTAGG para GROUP_CONCAT .