PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Pivot / crosstab z więcej niż jedną kolumną wartości

Jednym ze sposobów byłoby użycie typu złożonego:

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

Lub, do użytku ad hoc (rejestruje typ na czas trwania sesji):

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

Następnie uruchom tabelę przestawną tak, jak znasz i zdekomponuj typ złożony:

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

Wszystkie nawiasy są wymagane !

Podstawy 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. Znajdź źródło zapytania przez pgbouncer

  2. Jak przekonwertować FeatureCollection na GeometryCollection lub MultiPolygon?

  3. Lista przechowywanych funkcji, które odwołują się do tabeli w PostgreSQL

  4. Jak używać (zainstalować) dblink w PostgreSQL?

  5. Kompilacja libpq z iOS SDK 4.2