Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chọn tất cả các cột từ bảng 1 và một cột từ bảng hai được nhóm theo?

Tôi sẽ sử dụng listagg() trong một truy vấn con:

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;

CHỈNH SỬA:

Truy vấn trên thực hiện tổng hợp trước khi kết hợp, vì vậy nó có thể sử dụng t1.* . Bạn cũng có thể làm điều đó sau khi tham gia:

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;

Biểu mẫu này khiến việc thêm các cột bổ sung vào select khó hơn , nhưng bạn có thể tổng hợp theo bất kỳ thứ gì bạn thích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SID và Tên dịch vụ; những lỗi kết nối

  2. Phiên bản tùy chỉnh Oracle SessionStateStoreProviderBase

  3. Làm cách nào để duyệt cơ sở dữ liệu trên Máy chủ Oracle?

  4. Làm thế nào để truy xuất kết quả của chức năng cơ sở dữ liệu Oracle thông qua ODBC?

  5. Nối một cột theo một nhóm trong R