IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Alias de colonne et decode


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut Alias de colonne et decode
    bonjour tout le monde
    je voudrais savoir s' il est possible (sous Oracle 11g) d' attribuer un alias à une colonne grâce à la fonction decode.
    Je m'explique: j' ai une table avec la structure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    matable  :
    id   |filiere1 |filiere2 |  periode
    id1 | f_11   | f_21   |  p1
    id1 | f_12   | f_22   |  p2
    id2 | f_11   | null    |  p1
    un
    me donne le résultat que nous connaissons tous à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id   |filiere1 |filiere2 |  periode
    id1 | f_11   | f_21   |  p1
    id1 | f_12   | f_22   |  p2
    id2 | f_11   | null    |  p1
    seulement ce que je recherche est ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    id   |filiere1_P1 |filiere1_P2 |filiere2_P1 | filiere2_P2
    id1 | f_11        |f_12         | f_21       |f_22 
    id2 | f_11        |null          |null          |  null
    le but est de pouvoir sous cette présentation exporter les données dans un fichier excel.
    merci pour votre aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Oui, faites une recherche sur le mot-clef PIVOT.
    Vous aurez soit une solution à base de CASE / DECODE, soit une solution avec l'opérateur PIVOT qui est apparu en 11g.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut Merci
    merci Waldar.
    je m' execute

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut
    les recherches me font savoir que la fonction PIVOT a toujours besoin d' une fonction d' aggregat.

    je ne vois donc pas comment l' appliquer à mon problème.
    Je pensais effet à quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select id, 
    filiere1 as filiere1||decode(periode, 'p1','periode', null), 
    filiere2 as filiere2||decode(periode, 'p1','periode', null)

    par contre la solution avec case me paraît pas forcément être ce qu' il faut car elle aurait une influence sur les données à l' interieur des colonnes.
    Tout ce que je voudrais c' est simplement adapter l' alias des colonne.

    C' est encore très peu claire dans mon esprit

    merci

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Comme ceci par exemple (sans le mot clé PIVOT) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    SQL> with t as (
      2  select 'id1' as id, 'f_11' as filiere1, 'f_21' as filiere2, 'p1' as periode from dual union all
      3  select 'id1'      , 'f_12'            , 'f_22'            , 'p2' from dual union all
      4  select 'id2'      , 'f_11'            , NULL              , 'p1' from dual
      5  )
      6  select id,
      7         max(case when periode = 'p1' then filiere1 end) as filiere1_P1,
      8         max(case when periode = 'p2' then filiere1 end) as filiere1_P2,
      9         max(case when periode = 'p1' then filiere2 end) as filiere2_P1,
     10         max(case when periode = 'p2' then filiere2 end) as filiere2_P2
     11    from t
     12   group by id
     13   order by id;
     
    ID  FILI FILI FILI FILI
    --- ---- ---- ---- ----
    id1 f_11 f_12 f_21 f_22
    id2 f_11
     
    SQL>

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut
    Merci à toi skuatamad!
    C´est bien ce que j' ai spécifié dans mon post précédent(je le réeditais au moment ou tu postais).
    le case me change les valeurs à l' interieur des colonnes.

    merci encore une fois.

    J' essaie au moins la partie de ta solution avec WITH

Discussions similaires

  1. Utiliser un alias de colonne dans une clause Where MS SQL
    Par sir dragorn dans le forum Langage SQL
    Réponses: 11
    Dernier message: 12/10/2011, 09h31
  2. recuperer la Valeur d'un alias de colonne
    Par backdraf dans le forum Développement
    Réponses: 3
    Dernier message: 28/05/2009, 18h27
  3. Utiliser des ALIAS de colonnes dans une jointure
    Par mbzhackers dans le forum SQL
    Réponses: 4
    Dernier message: 31/03/2008, 10h27
  4. Comment utiliser les alias de colonnes ?
    Par Someonelse dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/10/2006, 16h37
  5. Alias de colonne
    Par plochert dans le forum Oracle
    Réponses: 2
    Dernier message: 18/04/2006, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo