sql >> Databáze >  >> RDS >> Oracle

Vyberte všechny sloupce z tabulky 1 a jeden sloupec z tabulky 2, která je seskupena podle?

Použil bych listagg() v dílčím dotazu:

select t1.*, xmlagg
from table1 t1 join
     (select name2, listagg(mother_name, ',') within group (order by mother_name) as xmlagg
      from table2 t2
      group by name2
     ) t2
     on t1.name1 = t2.name2;

EDIT:

Výše uvedený dotaz provádí agregaci před spojením, takže může použít t1.* . Můžete to také udělat po připojení:

select t1.name, listagg(mother_name, ',') within group (order by mother_name)
from table1 t1 join
     table2 t2
     on t1.name1 = t2.name2
group by t1.name;

Tento formulář ztěžuje přidávání dalších sloupců do select , ale můžete agregovat podle čehokoli.




  1. Formátování čísel pomocí čárek v MariaDB

  2. Uspořádejte příspěvky na fóru podle času poslední odpovědi

  3. Laravel leftPřipoj se pouze k poslednímu záznamu pravého stolu

  4. Indexy založené na funkcích Oracle