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

DB2 Discussion :

comment afficher 3 colonnes en une seule ?


Sujet :

DB2

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 7
    Points
    7
    Par défaut comment afficher 3 colonnes en une seule ?
    Bonjour,
    Je souhaite faire un select sur 3 colonnes contenant des donnees numeriques et que les donnees s'affichent sur 1 seul colonne en fusionnant les 3... (ex. ci dessous)
    J'ai essayé avec Concat mais cela ne semble pas fonctionner... de plus il semble qu'avec db2 c'est limité à 2 colonnes...?
    Est ce que c'est la bonne fonction ou voyez vous d'autres solutions ?
    quel serait le script ?
    Exemple :
    col1 col2 col3
    1234 - -
    - 4756 -
    - - 6895

    doit afficher :
    col1
    1234
    4756
    6895

    En vous remerciant pour votre aide !

  2. #2
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Points : 225
    Points
    225
    Par défaut
    Bonsoir,

    Ton souhait n'est pas vraiment de fusionner les 3 colonnes mais de toutes les afficher dans une seule colonne résultat.

    Si tu souhaitais concaténer, tu pourrais écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DIGITS(COL1)!!DIGITS(COL2)!!DIGITS(COL3) FROM TAB
    La concaténation ne s'exerçant que sur des données, alpha, tu dois appliquer la fonction DIGITS sur les colonnes numériques pour pouvoir te servir de !! Tu pourrais aussi de servir des fonctions CHAR ou CAST.

    Ceci dit, par rapport à l'exemple cité dans ta demande, en admettant que les - signifient valeur NULL et en admettant que tu n'ais toujours qu'une seule des 3 colonnes renseignées, alors tu peux écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COALESCE(COL1, COL2, COL3) FROM TAB
    La fonction COALESCE renvoie la 1ère expression non NULL de celles qui sont précisées entre parenthèses. Donc si COL1 est renseignée, DB2 renvoie la valeur de COL1. Par contre, si COL1 est NULL, DB2 teste COL2. Si COL2 est renseignée, DB2 renvoie la valeur de COL2...

    Problème : si COL1 et COL2 sont toutes les 2 renseignées, alors DB2 renverra COL1 sans tenir compte de COL2.

    Si les - ne signifie pas NULL, mais 0 par exemple, tu peux écrire un CASE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
    CASE
      WHEN COL1 <> 0 THEN COL1
      WHEN COL2 <> 0 THEN COL2
      WHEN COL3 <> 0 THEN COL3
      ELSE ???
    END
    FROM TAB
    Le CASE teste les différents prédicats dans l'ordre où ils sont écrits. Dès qu'un des prédicats renvoie Vrai, DB2 renvoie le THEN correspondant. Dans le ELSE de la fin tu mets ce que tu veux (pas de THEN à préciser). Attention, si pas de ELSE et qu'aucun prédicat n'est vrai, alors le CASE renvoie NULL.

    Bonne utilisation.

  3. #3
    Membre chevronné Avatar de bernard59139
    Profil pro
    Retired
    Inscrit en
    Octobre 2006
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retired

    Informations forums :
    Inscription : Octobre 2006
    Messages : 957
    Points : 2 072
    Points
    2 072
    Par défaut
    Bonjour

    Pour completer la réponse de pdz74, CONCAT fonctionne bien avec 2 colonnes, mais rien ne t'empeche d'utiliser plusieurs CONCAT

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT cola CONCAT colb CONCAT colc
    truc utilisable avec la fonction CONCAT, mais ca rend très vite la requête illisible.

    Si je dois travailler sur plusieurs machines, j'évite d'utiliser le ! comme opérateur de concaténation. ! n'est pas toujours reconnu (problème de CCID code-page).

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 7
    Points
    7
    Par défaut MERCI !!!
    Bonjour PDZ74 et bernard59139,
    Je vous remercie pour votre reponse rapide !

    J'ai testé ce matin le script suivant :
    SELECT COALESCE(COL1, COL2, COL3) FROM TAB

    Et cela affiche parfaitement ce que je souhaitais avoir.
    J'ai inclus cette partie de codde dans le script entier et cela fonctionne parfaitement !

    Donc merci à bernard59139 d'avoir contribué à ce post et merci infiniment PDZ74 pour la reponse ultra rapide (à 23h30 )! et tres detaillée qui a resolu mon probleme !

    Bonne journée à vous,

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2014, 23h11
  2. Réponses: 10
    Dernier message: 12/01/2010, 11h06
  3. [Débutant] comment afficher plusieurs images dans une seule interface ?
    Par youssa81 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 06/02/2009, 00h36
  4. Afficher plusieur colonnes sur une seule colonne ?
    Par Interruption13h dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/02/2007, 16h57
  5. Réponses: 2
    Dernier message: 10/12/2006, 13h32

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