sql >> Database teknologi >  >> RDS >> Mysql

Sådan får du en lignende værdi i Oracle

Her er en løsning, der ville fungere til MySQL. Den bruger en korreleret underforespørgsel i select-sætningen til at gruppere sammenkæde Col2 værdier. Logikken er, at vi kun aggregerer værdier, der er mindre end eller lig med den aktuelle række, for en given gruppe af poster, der deler den samme Col1 værdi.

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

Her er den samme forespørgsel i 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

Bemærk, at den eneste reelle ændring er at erstatte LISTAGG for GROUP_CONCAT .



  1. De mest almindelige PostgreSQL-fejlscenarier

  2. Hvorfor indsætte TSQL-sætningsblok, når transaktionsisolationsniveau for en anden transaktion kan serialiseres med et ikke-konfliktende filter?

  3. com.mysql.jdbc.PacketTooBigException java

  4. Få topscorer(e) i MySQL