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 :

GROUP_CONCAT en DB2


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut GROUP_CONCAT en DB2
    Existe-t-il une solution équivalente à la fonction GROUP_CONCAT en SQL sous DB2 ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    ça fait quoi en principe GROUP_CONCAT ?

    DB2 ? Laquelle, sur quelle plate-forme ?

  3. #3
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut
    Plateforme AS 400. Group_concat ça concatène les valeurs d'une colonnes après un group by (). http://dev.mysql.com/doc/refman/5.0/...functions.html

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    GROUP_CONCAT n'existe pas sous DB2/400, c'est du MySQL pur et dur.
    On peut toutefois s'en sortir en écrivant sa propre fonction SQL.

  5. #5
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut
    Peux-tu développer stp ?

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    J'ai posé la question aux Gourous iSeries/AS400.
    Birgitta Hauser m'a proposé de créer l'UDF suivante :

    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
    21
    CREATE FUNCTION MonSchema/MaFonction (
        PARCol2 CHAR(5) )
        RETURNS VARCHAR(1024)   
        LANGUAGE SQL
        NOT DETERMINISTIC
        READS SQL DATA
        CALLED ON NULL INPUT
        DISALLOW PARALLEL
     
       BEGIN
          DECLARE ReturnVal VARCHAR(1024) NOT NULL DEFAULT '';
     
          FOR CsrC1 AS C1 CURSOR
              FOR SELECT MaCol1
                     FROM MaTable
                     WHERE MaCol2 = ParCol2
              DO SET ReturnVal = ReturnVal Concat CsrC1.MaCol1;
          END FOR;
     
          RETURN LTRIM(ReturnVal);
       END  ;
    puis de l'appeler ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT MaCol1, MaFonction(MaCol2)   
    FROM MaTable
    GROUP BY MaCol1, MaFonction(MaCol2)
    On obtient alors l'équivalent du GROUP_CONCAT de MySQL.

    La première colonne affiche le contenu de MaCol1 qui est la zone sur laquelle s'effectue le GROUP BY.

    Les différentes valeurs de MaCol2 ayant la colonne MaCol1 identique sont placées à la queue leu leu dans la deuxième colonne de la requête.

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

Discussions similaires

  1. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  2. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  3. [CHOIX]interbase, postgreSQL ou DB2?
    Par biohazard dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 28/03/2003, 14h41
  4. [Comparatif] DB2, Oracle et SQLServer
    Par Laurent MALAVASI dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 25/10/2002, 12h26
  5. [DB2] Au sujet de...
    Par Eric Denné dans le forum DB2
    Réponses: 2
    Dernier message: 16/09/2002, 19h21

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