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

Pivot / crosstab có nhiều cột giá trị

Một cách là sử dụng kiểu kết hợp:

CREATE TYPE i2 AS (a int, b int);

Hoặc, để sử dụng đặc biệt (đăng ký loại trong thời gian của phiên):

CREATE TEMP TABLE i2 (a int, b int);

Sau đó, chạy bảng lục mã như bạn đã biết và phân tách loại hỗn hợp:

SELECT client_id
     , (a0).a AS a0_cur_val, (a0).b AS a0_fut_val
     , (a1).a AS a1_cur_val, (a1).b AS a1_fut_val
     , (a2).a AS a2_cur_val, (a2).b AS a2_fut_val
FROM   crosstab(
       'SELECT client_id, asset_type, (current_value, future_value)::i2
        FROM   foo
        ORDER  BY 1,2'

      ,'SELECT * FROM generate_series(0,2)'
   ) AS ct (client_id int, a0 i2, a1 i2, a2 i2);

Tất cả các dấu ngoặc đơn là bắt buộc !

Kiến thức cơ bản về crosstab() :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm tháng vào một ngày trong PostgreSQL

  2. Rails Postgres - Truy vấn cột Jsonb

  3. PostgreSQL:Lặp lại các hàng trong bảng với vòng lặp for, truy xuất giá trị cột dựa trên hàng hiện tại

  4. Tạo một truy vấn để tạo một bộ truy vấn Django đầy thử thách

  5. thiết lập PostgreSQL với Laravel trong MAMP