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

Основна/кръстосана таблица с повече от една колона със стойности

Един от начините е да използвате съставен тип:

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

Или за ad-hoc употреба (регистрира типа за времетраенето на сесията):

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

След това стартирайте кръстосаната таблица, както я познавате, и разложете съставния тип:

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);

Всички скоби са задължителни !

Основи за 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. Postgres:INSERT, ако вече не съществува

  2. Кога да използваме наследени таблици в PostgreSQL?

  3. Актуализирайте стойността на ключа в масив от обекти jsonb

  4. Разбор на дата с различни часови зони

  5. Как да коригирате бавна имплицитна заявка в таблицата pg_attribute в Rails