Transposer des colonnes en lignes [Résolu]

dipvlou - 28 sept. 2017 à 19:04 - Dernière réponse :  dipvlou
- 29 sept. 2017 à 09:15
Bonjour,

je cherche un moyen de transposer par le biais d'une seule requête (pas de procédure stockée) le contenu d'une table. Cette transposition me servira par la suite à l'insertion dans une autre table. Je m'explique :
(PS : sous oracle)

J'ai une table temporaire sous cette forme :
CREATE TABLE temporaire (
   id_client varchar2(5), 
   num1 varchar2(5),
   num2 varchar2(5),
   num3 varchar2(5)
);
insert into temporaire  ('A6352', 'test1', 'test2', 'test5');
insert into temporaire  ('B2360', NULL, 'test5', NULL);
insert into temporaire  ('C4596', 'test3', 'test2', '');

Je souhaite récupérer les données par une requête de sorte à avoir la forme
id_client | num
----------|----
A6352     | test1
A6352     | test2
A6352     | test5
B2360     | test5
C4596     | test3
C4596     | test2


J'avais pensé à faire des UNION, existe-t-il un autre moyen moins long dans le code ?
Afficher la suite 

4 réponses

Répondre au sujet
yg_be 4109 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 28 sept. 2017 à 20:36
0
Utile
3
bonsoir, je pense que faire le UNION de trois requêtes est la bonne méthode.
Merci pour la reponse.
L'exemple de ce sujet montre 3 colonnes mais ma vraie table en comporte une vingtaine.
Utiliser le UNION pour 40000 lignes ne sera pas trop long ?
yg_be 4109 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention > dipvlou - 29 sept. 2017 à 08:00
je pense que c'est la bonne méthode pour 40000 lignes.
si tu ne cherches pas à éliminer les doublons, tu peux également le faire via 40 requêtes indépendantes.
Commenter la réponse de yg_be