sql >> Database >  >> RDS >> Oracle

Selecteer alle kolommen uit tabel 1 en één kolom uit tabel twee die is gegroepeerd op?

Ik zou listagg() . gebruiken in een subquery:

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;

BEWERKEN:

De bovenstaande query doet de aggregatie vóór de join, zodat deze t1.* . kan gebruiken . Je kunt het ook doen na de deelname:

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;

Dit formulier maakt het moeilijker om extra kolommen toe te voegen aan de select , maar je kunt aggregeren op alles wat je maar wilt.




  1. Schrijf een selectiequery om tabelwaarde te verkrijgen met een andere tabelveldwaarde

  2. Waarom kan Java geen verbinding maken met MySQL 5.7 na de laatste JDK-update en hoe moet dit worden opgelost? (ssl.SSLHandshakeException:geen geschikt protocol)

  3. Workflow voor het afhandelen van vervolgmigraties en initialisatie?

  4. Wat is de vorm van mijn lokale postgresql-database-URL?