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

Tương đương với array_agg của PostgreSQL trong Oracle XE 11.2

Trừ khi bạn đang sử dụng nó trong một thủ tục được lưu trữ để lưu đầu ra dưới dạng một mảng (hoặc tập hợp), một truy vấn với LISTAGG phải đủ và cho cùng một đầu ra.

select ID , LISTAGG(Category,',') WITHIN GROUP ( ORDER BY ID ) Categories
FROM yourtable GROUP BY ID;

Trong oracle, chúng ta không có hàm chuyển đổi đơn giản như array_agg . Tuy nhiên, bạn có thể tạo loại tập hợp do người dùng xác định, sau đó sử dụng CASTCOLLECT các chức năng để chuyển đổi nó thành NESTED TABLE để có được cùng một đầu ra mong muốn.

Đầu tiên, tạo một bộ sưu tập TYPE .

create or replace TYPE categorytype as TABLE OF VARCHAR2(20);

Bây giờ, việc chạy truy vấn này tương đương với việc sử dụng string_agg hoặc LISTAGG , mặc dù categories là một mảng hoặc tập hợp , chứ không phải là một chuỗi.

select id, CAST ( COLLECT(Category) as categorytype ) categories
FROM yourtable group by id;

| ID | CATEGORIES |
|----|------------|
|  1 |  Cat1,Cat2 |
|  2 |  Cat3,Cat4 |

DEMO



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Array_agg trong các trích dẫn có chọn lọc của postgres

  2. Nhiều chủ đề có thể gây ra các bản cập nhật trùng lặp trên tập hợp bị ràng buộc không?

  3. Đặt lại trình tự trong jpa

  4. \ d không thành công trong chương trình jdbc

  5. Sử dụng UNNEST với một JOIN