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

Langage SQL Discussion :

Alias colonne dépendant de la valeur d'une autre colonne


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Alias colonne dépendant de la valeur d'une autre colonne
    Bonjour,

    J'utilise le Query de Microsoft Excel 2002 pour présenter des informations sous forme de tableau personalisable.

    Dans cet exemple j'ai une table de deux colonnes: Col_Sens, Col_Valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    |Col_Sens|Col_Valeur|
    |    D       |     20        |
    |    G       |     40        |
    Quel requête faut il pour avoir ce résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    |Droite    | Gauche |
    |   20      |             |
    |             |    40     |
    La lettre D créer une colonne intitulée "Droite" et G crée une colonne "Gauche".
    J'ai tenté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (SELECT Col_Sens FROM Resultat WHERE Col_Sens='G')
         SELECT Col_Valeur as Gauche 
         FROM Resultat
    else
         SELECT Col_Valeur as Droite 
         FROM Resultat
    Mais je crois que c'est complètement faux.

    Quelqu'un peut il m'aider. Merci

  2. #2
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select 
            decode(col_sens,'G',col_valeur) Gauche,
            decode(col_sens,'D',col_valeur) Droite
    From Ma_table
    Signé : Capitaine Jean-Luc Picard

  3. #3
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select col_valeur Gauche , null droite from table where col_sens = 'G'
    Union
    Select null, col_valeur   from table where col_sens = 'D'
    Signé : Capitaine Jean-Luc Picard

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Super argoet. La 2e méthode marche super.

    Je te remercie infiniment.

    Bonne journée à tous.

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    J'ai une 2e question sur la même requete en plus complete.

    J'utilise un CASE et je voudrais renommer la colonne.

    ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Select col_valeur Gauche , null droite, 
    Il_Genre=CASE Genre
         WHEN 'C' THEN 'CARRE'
         WHEN 'N' THEN UneValAutreColonne
    END
    From table where col_sens = 'G' 
    Union 
    Select null, col_valeur,
    Il_Genre=CASE Genre
         WHEN 'C' THEN 'CARRE'
         WHEN 'N' THEN UneValAutreColonne
    END
    from table where col_sens = 'D'
    Je souhaiterais changer Il_Genre par Genre.

    J'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Il_Genre as Genre=etc...
    et
    Case etc...
    END as Genre etc...
    Mais ca marche pas.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Dans une union, c'est la première requête qui donne le nom des colonnes du résultat...
    D'autre part la syntaxe MonNouveauNomColonne = CASE... n'existe pas en SQL elle est spécifique à MS SQL Server !

    Donc :

    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
    SELECT col_valeur Gauche, null droite,
           CASE Genre
              WHEN 'C' THEN 'CARRE'
              WHEN 'N' THEN UneValAutreColonne
           END as GENRE
    FROM   table 
    WHERE  col_sens = 'G'
    UNION
    SELECT null, col_valeur,
           CASE Genre
              WHEN 'C' THEN 'CARRE'
              WHEN 'N' THEN UneValAutreColonne
           END
    FROM   table
    WHERE  col_sens = 'D'
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Super. Ca fonctionne. Je vous remercie tous.

    A la prochaine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/10/2013, 15h35
  2. Réponses: 2
    Dernier message: 17/03/2011, 21h45
  3. Réponses: 3
    Dernier message: 11/03/2010, 11h44
  4. Réponses: 5
    Dernier message: 07/05/2009, 16h41
  5. Réponses: 10
    Dernier message: 21/08/2007, 10h21

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