Oracle
 sql >> база данни >  >> RDS >> Oracle

Изберете всички колони от таблица 1 и една колона от таблица две, която е групирана по?

Бих използвал listagg() в подзаявка:

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;

РЕДАКТИРАНЕ:

Горната заявка извършва агрегирането преди присъединяването, така че може да използва t1.* . Можете да го направите и след присъединяването:

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;

Тази форма прави по-трудно добавянето на допълнителни колони към select , но можете да обобщавате по каквото пожелаете.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Винаги ли DDL операторите ви дават имплицитен комит или можете да получите имплицитно връщане назад?

  2. Настройка на Oracle за потребителска схема по подразбиране (без промяна на сесия)

  3. PL/SQL - Пример за грешка за повдигане на приложението

  4. SQL работна седмица в Oracle

  5. Вмъкване на Oracle, ако редът не съществува