sql >> Database >  >> RDS >> Mysql

Hoe een vergelijkbare waarde in Oracle te krijgen?

Hier is een oplossing die zou werken voor MySQL. Het gebruikt een gecorreleerde subquery in de select-clausule om samen te groeperen Col2 waarden. De logica is dat we alleen waarden aggregeren die kleiner zijn dan of gelijk zijn aan de huidige rij, voor een bepaalde groep records die dezelfde Col1 delen. waarde.

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;

Demo

Hier is dezelfde vraag in 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;

Demo

Merk op dat de enige echte verandering het vervangen van LISTAGG . is voor GROUP_CONCAT .



  1. Hoe een Oracle-opgeslagen procedure aan te roepen die een door de gebruiker gedefinieerd type in Java bevat?

  2. Hoe een tabel naar CSV te exporteren met Oracle SQL Developer?

  3. CONCAT gebruiken met MySQL-triggers (fout bij ,)

  4. is php sorteren beter dan mysql bestellen op?