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

Oracle Discussion :

Concaténer toutes les lignes d'une colonne


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 96
    Points
    96
    Par défaut Concaténer toutes les lignes d'une colonne
    Bonjour,

    Voila ce que je voudrai faire.
    Je voudrai concaténer toutes les valeurs d'une colonne entre elles. Voire les séparer avec un - ou un ;
    Genre la colone A a des valeurs L1, L2,...
    avoir: L1;L2;L3....


    Merci

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    un résumé des techniques d'aggrégations sur

    http://www.oracle-base.com/articles/...Techniques.php

    en particulier
    --> User-Defined Aggregate Function

  3. #3
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 96
    Points
    96
    Par défaut
    Je ne veux pas concaténer les lignes de plusieurs colonnes mais juste les valeurs d'une seule colone entre elles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ID   TOTO
    ----------
    1     A
    1     B
    2     A
    3     D
    Je voudrai avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ID   TOTO
    --------
    1    A;B
    2    A
    3    D
    Et sans PL/SQL, juste avec une requête classique

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    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
     
    SQL> create table t as select 1 id, 'A' toto from dual union select 1,'B' from dual 
     2  union select 2,'A' from dual union select 3,'D' from dual;
     
    Table created.
     
    SQL> select id, rtrim(max(decode(r,1,toto))||';'||max(decode(r,2,toto))||';'||
     2  max(decode(r,3,toto))||';'||max(decode(r,4,toto)),';') 
     3  from (select id,toto, row_number() over (partition by id order by toto) r from t) 
     4  group by id 
     5  order by id;
            ID RTRIM(M
    ---------- -------
             1 A;B
             2 A
             3 D

  5. #5
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 96
    Points
    96
    Par défaut
    Merci pour la réponse, mais elle ne répond pas exactement à ce que je veux faire...
    En effet, dans l'exemple de Laurent, le nombre de lignes est limité à 4. Or, le nombre de lignes de ma table n'est pas fixe ; il me faudrait donc une solution qui fonctionne quel que soit le nombre de lignes de ma table (dans mon exemple, il n'y avait que 4 lignes, mais ce n'était qu'un exemple...).

    Merci d'avance !

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    de toute façon, tu ne pourras pas concaténer des centaines de colonnes. Essaye de jeter un oeil au lien ci-dessus

  7. #7
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Points : 96
    Points
    96
    Par défaut
    MERCI !!

    C'est bon, j'ai trouvé la solution dont j'avais besoin ; j'ai utilisé le '
    SYS_CONNECT_BY_PATH'.

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 28/10/2010, 17h26
  2. [XL-2003] Modifier le le format Date sur toute les lignes d'une colonne
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/08/2010, 14h00
  3. [XL-2003] Appliquer une formule à toutes les lignes d'une colonne sans en connaitre le nombre à l'avance
    Par Chevrefeuille dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/04/2010, 14h43
  4. Réponses: 3
    Dernier message: 28/04/2009, 00h42
  5. afficher toutes les lignes d'une colonne d'une BDD + infos relatives à 1 ligne
    Par ju0123456789 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/02/2009, 19h20

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