PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 29/11/2018 10:29:22

trainvapeur
Membre

inverse de crosstab

Je reviens sur mes tables à plus de 200 champs que j'importe d'Oracle via oracle_fdw. Cela marche tellement bien qu'on me demande des choses plus complexes !

Ces tables sont remplies à 80% de valeurs NULL. On voudrait essayer de faire l'inverse de crosstab; c'est à dire que, pour chaque ligne de la table Oracle, on aurait dans la table Postgre une ligne par champ non NULL. Cette ligne contiendrait un ou plusieurs champs pour la clef, un champ pour le nom du champ Oracle, un pour son type, et 1 pour la valeur (en fait 3 car il faut un champ pour les valeurs numériques, un pour les textes (rares) et un pour les dates).

A priori je n'ai pas trouvé de fonction qui pourrait faire cela. Mais est-ce que quelqu'un l'a déjà fait et pourrait m'aiguiller sur la marche à suivre ?

D'avance merci
Jean

Hors ligne

#2 29/11/2018 15:42:13

dverite
Membre

Re : inverse de crosstab

Ca peut se faire en passant par des fonctions json et une jointure latérale.
Voir "Comment dé-pivoter un jeu de données?" dans
https://blog-postgresql.verite.pro/2018 … pivot.html
pour un exemple concret.

Hors ligne

#3 30/11/2018 12:02:02

trainvapeur
Membre

Re : inverse de crosstab

Merci, je regarde cela ce week-end.

Jean

Hors ligne

Pied de page des forums