2017-03-16 4 views
0

J'ai quelques données qui décrivent des ensembles de données plus larges. Il est donné dans le format de trois colonnes; champs, type de champ, notes. Chaque rangée est alors l'un des champs. Ce que je veux faire est de faire pivoter la première colonne de sorte que les lignes deviennent des colonnes dans lesquelles je vais charger les données. J'ai regardé la fonction de création de table en utilisant le tableau croisé mais la sortie réorganise juste mes rangées jusqu'ici j'ai essayé;Un pivot très simple dans PostgreSQL

SELECT * 
FROM crosstab('select field, fieldtype, notes FROM 
databasestructure order by 1,2') 
AS final_result(field TEXT, fieldtype text,notes text);' 
+0

Veuillez modifier la question et ajouter des exemples de données et le résultat attendu. – klin

Répondre

0

Vous devez installer cette extension:

CREATE EXTENSION tablefunc 

alors vous devez écrire vos noms de FieldType ou alias:

SELECT * 
FROM crosstab('select field, fieldtype, notes FROM 
databasestructure order by 1,2') 
AS final_result(field TEXT, fieldtype1 text,fieldtype2 text,fieldtype3 text); 

vous devez d'abord déterminer le numéro de votre FieldType pour la Définissez vos noms de colonne de catégorie. Et soyez prudent quel que soit votre type de valeur, ce sera le type de vos colonnes de catégorie. Dans cet exemple, votre champ est du texte, donc votre fieldtype1..2..3 aura des valeurs de texte.

select distinct fieldtype 
FROM databasestructure 

Regardez ce crosstab example

Autre lien utile. Il est expliqué dans more details

Afin de vous donner une réponse avec la sortie désirée j'ai besoin de données de votre table.