Transposer des colonnes en lignes

Résolu/Fermé
dipvlou - Modifié le 28 sept. 2017 à 19:12
 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 ?

1 réponse

yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
28 sept. 2017 à 20:36
bonsoir, je pense que faire le UNION de trois requêtes est la bonne méthode.
0
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 ?
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > dipvlou
Modifié le 29 sept. 2017 à 08:01
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.
0
Ok, merci à toi !
0