Pivot sur Plusieurs Colonnes à l'aide de Tablefunc

Quelqu'un a utilisé tablefunc pivoter sur plusieurs variables, par opposition à l'utilisation d' rang nom? Les notes de documentation:

Les colonnes "supplémentaires" sont censés être les mêmes pour toutes les lignes avec la
même row_name valeur.

Je ne suis pas sûr de la façon de le faire sans en combinant les colonnes que je veux pivot (ce dont je doute fortement de me donnera la vitesse j'ai besoin). Une façon possible de le faire serait de faire de l'entité numérique et l'ajouter à la localt comme le nombre de millisecondes, mais cela semble être un fragile façon de procéder.

J'ai édité les données utilisées dans une réponse à cette question: PostgreSQL Requête Analyse Croisée.

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

Retourne:

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

De sorte que les états de documentation, la supplémentaire colonne aka "Attribut" est supposé être le même pour chaque rang nom aka "Section". Ainsi, les rapports de b pour la deuxième ligne, même si le "entité" a également un 'c' de la valeur pour que " timeof valeur.

De Sortie Souhaité:

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

Des pensées ou des références?

Un fond un peu plus: j'ai éventuellement besoin de faire cela pour milliards de lignes et je suis en essais hors de stocker ces données en long et en large de formats et de voir si je peux utiliser tablefunc pour aller de long à l'échelle de format plus efficacement qu'avec des régulière des fonctions d'agrégation.

Je vais avoir environ 100 mesures effectuées toutes les minutes environ 300 entités. Souvent, nous avons besoin de comparer les différentes mesures effectuées pour une deuxième pour une entité donnée, donc nous avons besoin d'aller à grand format très souvent. Aussi, les mesures effectuées sur une entité donnée sont très variables.

EDIT: j'ai trouvé une ressource sur ce: http://www.postgresonline.com/journal/categories/24-tablefunc.

+1 Belle question avec un (très apprécié) de travail, cas de test, ce qui démontre clairement le problème. Seule la version de PostgreSQL est manquant. Je suppose actuelle, la version 9.2. Mais la solution est la même pour les deux dernières versions majeures.
La solution est valable que pour ce problème, et je veux dire seulement "ce problème" car il n'est pas valable pour les tableaux croisés dynamiques sur deux index de colonne. Donc, le titre n'est pas vrai, ou la réponse devrait être le deuxième (id=réponse-15559942)

OriginalL'auteur ideamotor | 2013-03-14