Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/07/2011, 18h09   #1
Membre Expert
 
Avatar de Frank
 
Homme Frank
Chef de projet Informatique
Inscription : avril 2002
Messages : 1 036
Détails du profil
Informations personnelles :
Nom : Homme Frank
Âge : 44
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Chef de projet Informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : avril 2002
Messages : 1 036
Points : 1 187
Points : 1 187
Par défaut Transposer colonnes en lignes

Bonjour,

j'ai une table que je voudrais transformer.
La table se présente ainsi :

CodeProduit UN_Jan2010 UN_Fev2010 CA_Jan2010 CA_Fev2010
11111111 1000 14000 25525 20120
les entêtes de colonnes correspondent à des quantités vendues par mois (UN pour unité, et 012010 pour Janvier 2010) et au CA.
Je voudrais transposer ces données dans un format plus exploitable :

CodeProduit Periode UN CA
1111111 012010 1000 25525
1111111 022010 14000 22120

Existe t'il un fonction Oracle ou une manière simple de procéder à cette transformation ?

Merci d'avance,
__________________
Frank
Les règles!
FAQ Delphi
FAQ Access
Frank est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 19h00   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
En 11g vous avez la fonction UNPIVOT, sinon le classique UNION ALL :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
WITH SR AS
(
SELECT 11111111 AS CodeProduit
     , 1000     AS UN_Jan2010
     , 14000    AS UN_Fev2010
     , 25525    AS CA_Jan2010
     , 20120    AS CA_Fev2010
  FROM dual
)
SELECT CodeProduit, '012010' AS Periode, UN_Jan2010 AS UN, CA_Jan2010 AS CA FROM SR union ALL
SELECT CodeProduit, '022010'           , UN_Fev2010      , CA_Fev2010       FROM SR;
 
CODEPRODUIT PERIOD         UN         CA
----------- ------ ---------- ----------
   11111111 012010       1000      25525
   11111111 022010      14000      20120
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 16h25   #3
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
Une instruction insert multi-table permet de faire ce type de transformation facilement.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 12h47   #4
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
dans sqlplus, fold_after

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
COL CA FOLD_A
SELECT
  CodeProduit, '012010' AS Periode, UN_Jan2010 AS UN, CA_Jan2010 AS CA ,
  CodeProduit, '022010' AS Periode, UN_Fev2010 AS UN, CA_Fev2010 AS CA
FROM SR;
CODEPRODUIT PERIOD         UN         CA
----------- ------ ---------- ----------
CODEPRODUIT PERIOD         UN         CA
----------- ------ ---------- ----------
   11111111 012010       1000      25525
   11111111 022010      14000      20120
 
        111 012010         10        255
        111 022010        140        200
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 17h55   #5
Membre Expert
 
Avatar de Frank
 
Homme Frank
Chef de projet Informatique
Inscription : avril 2002
Messages : 1 036
Détails du profil
Informations personnelles :
Nom : Homme Frank
Âge : 44
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Chef de projet Informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : avril 2002
Messages : 1 036
Points : 1 187
Points : 1 187
Merci pour vos réponses.
__________________
Frank
Les règles!
FAQ Delphi
FAQ Access
Frank est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h15.


 
 
 
 
Partenaires

Hébergement Web