Pivô em várias colunas usando o Tablefunc

Alguém já usoutablefunc para girar em várias variáveis ​​em oposição a usar apenasnome da linha? As notas de documentação:

Espera-se que as colunas "extras" sejam as mesmas para todas as linhas com o mesmo valor de row_name.

Não tenho certeza de como fazer isso sem combinar as colunas nas quais quero girar (o que duvido que me dê a velocidade de que preciso). Uma maneira possível de fazer isso seria tornar a entidade numérica e adicioná-la ao local como milissegundos, mas isso parece ser uma maneira instável de prosseguir.

Eu editei os dados usados ​​em uma resposta a essa pergunta:Consulta de referência cruzada do PostgreSQL.

 CREATE TEMP TABLE t4 (
  timeof   timestamp
 ,entity    character
 ,status    integer
 ,ct        integer);

 INSERT INTO t4 VALUES 
  ('2012-01-01', 'a', 1, 1)
 ,('2012-01-01', 'a', 0, 2)
 ,('2012-01-02', 'b', 1, 3)
 ,('2012-01-02', 'c', 0, 4);

 SELECT * FROM crosstab(
     'SELECT timeof, entity, status, ct
      FROM   t4
      ORDER  BY 1,2,3'
     ,$VALUES (1::text), (0::text)$)
 AS ct ("Section" timestamp, "Attribute" character, "1" int, "0" int);

Retorna:

 Section                   | Attribute | 1 | 0
---------------------------+-----------+---+---
 2012-01-01 00:00:00       |     a     | 1 | 2
 2012-01-02 00:00:00       |     b     | 3 | 4

Então, como a documentação afirma, oextra coluna aka "Atributo" é assumido como sendo o mesmo para cadanome da linha aka "Seção". Assim, relatab para a segunda linha, embora 'entidade' também tenha um'c' valor para esse valor 'timeof'.

Saída desejada:

Section                   | Attribute | 1 | 0
--------------------------+-----------+---+---
2012-01-01 00:00:00       |     a     | 1 | 2
2012-01-02 00:00:00       |     b     | 3 |  
2012-01-02 00:00:00       |     c     |   | 4

Quaisquer pensamentos ou referências?

Um pouco mais de fundo: eu potencialmente preciso fazer isso parabilhões de linhas e estou testando armazenar esses dados em formatos longos e amplos e ver se posso usartablefunc ir de um formato longo para um formato mais amplo do que com funções agregadas regulares.
Eu terei cerca de 100 medições feitas a cada minuto para cerca de 300 entidades. Frequentemente, precisaremos comparar as diferentes medições feitas para um dado segundo para uma dada entidade, então precisaremos ir para o formato amplo com muita frequência. Além disso, as medições feitas em uma entidade particular são altamente variáveis.

EDIT: eu encontrei um recurso sobre isso:http://www.postgresonline.com/journal/categories/24-tablefunc.

questionAnswers(3)

yourAnswerToTheQuestion