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

Thu gọn các hàng thành một cột

Trước tiên, hãy cài đặt tiện ích mở rộng tablefunc , nếu bạn chưa có. Cần thực hiện một lần cho mỗi cơ sở dữ liệu.

CREATE EXTENSION tablefunc;

Bạn cần PostgreSQL 9.1 cho CREATE EXTENSION . Trong các phiên bản cũ hơn, bạn phải chạy tập lệnh cài đặt từ trình bao bằng lệnh như:

psql -d dbname -f SHAREDIR/contrib/tablefunc.sql

Thông tin thêm về Postgres 9.0 trong hướng dẫn tốt .

Sau đó, bạn có thể sử dụng một truy vấn như sau:

SELECT *
FROM   crosstab (
    'SELECT id
           ,label
           ,value
     FROM   t
     ORDER  BY 1, 2',

    'SELECT DISTINCT label
     FROM   t
     ORDER  BY 1')
AS tbl (
 id   int
,lab1 text
,lab2 text
,lab3 text
,lab4 text
,lab5 text
,lab6 text
);

Trả về chính xác những gì bạn đã yêu cầu.
Bạn cũng có thể tạo một hàm cho điều đó. Tôi đã thêm thông tin khác trong câu trả lời có liên quan chặt chẽ này .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 12:Triển khai K-Nearest Neighbor Space Partitioned Generated Tree Indexes

  2. Có bất kỳ cú pháp thoát nào cho biến psql bên trong các hàm PostgreSQL không?

  3. Làm thế nào để sử dụng pg_stat_activity?

  4. Làm cách nào để theo dõi tiến trình truy vấn trong PostgreSQL?

  5. Sử dụng một cái gì đó như TOP với GROUP BY