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 :

[SQL] Lister une colonne en ligne


Sujet :

Oracle

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Points : 40
    Points
    40
    Par défaut [SQL] Lister une colonne en ligne
    Bonjour,

    j'ai une table Oracle T1 (ID,VAL) où un même ID peut avoir plusieurs valeurs VAL associées.

    Je voudrai faire un SELECT sur ma table qui me renvoie une seule ligne par ID, avec comme VAL associée la concaténation des différentes valeurs.


    Exemple :

    dans T1 on a :

    ID1 VAL1
    ID1 VAL2
    ID1 VAL3
    ID2 VAL1
    ID3 VAL3
    ID3 VAL4


    je voudrais obtenir :

    ID1 VAL1, VAL2, VAL3
    ID2 VAL1
    ID3 VAL3, VAL4


    Je ne peux pas utiliser de jointure sur T1, je peux seulement intervenir sur les paramètres du SELECT.

    Est-ce possible? Si oui, comment?

    Merci pour vos réponses.

    SPG40

  2. #2
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Je pense qu'il faut que tu passes par du PL/SQL pour formatter à ta guise le résultat d'une requête SELECT.

    -o
    zou'@+
    ===
    {++(Mathieu)++}

  3. #3
    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
    Citation Envoyé par scorp
    Je pense qu'il faut que tu passes par du PL/SQL pour formatter à ta guise le résultat d'une requête SELECT.

    -o

    il existe plusieurs variantes, résumées dans http://www.oracle-base.com/articles/...Techniques.php

  4. #4
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Points : 40
    Points
    40
    Par défaut
    Merci Laurent, j'ai trouvé mon bonheur avec ce lien.


    Une petite précision...
    Comme je ne pouvais pas utiliser de GROUP BY, j'ai créé dans mon schéma la fonction suivante.


    CREATE OR REPLACE FUNCTION concatenate_list (p_cursor IN SYS_REFCURSOR)
    RETURN VARCHAR2
    IS
    l_return VARCHAR2(32767);
    l_temp VARCHAR2(32767);
    BEGIN
    LOOP
    FETCH p_cursor
    INTO l_temp;
    EXIT WHEN p_cursor%NOTFOUND;
    l_return := l_return || ', ' || l_temp;
    END LOOP;
    RETURN LTRIM(l_return, ', ');
    END;
    /
    SHOW ERRORS

    Puis j'utilise le SELECT comme suit :

    SELECT SUBSTR(ID,9,6) || '\nValeurs : ' || SUBSTR(concatenate_list(CURSOR(SELECT VAL FROM T1ee WHERE T1.id = ee.id)),1,40)
    FROM T1 ;
    J'obtiens exactement ce que je voulais.

    Merci à tous.

    SPG40.

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

Discussions similaires

  1. Requête SQL : Afficher les colonnes en ligne, et vice versa
    Par paflolo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/03/2009, 09h16
  2. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  3. [DB2/SQL] Passer une colonne de NULL à NOT NULL
    Par tux2005 dans le forum DB2
    Réponses: 6
    Dernier message: 08/06/2007, 22h57
  4. Réponses: 3
    Dernier message: 22/10/2006, 23h15
  5. [SQL] Transposer des colonnes en lignes + LIKE et SOUNDEX
    Par Anne1969 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/11/2005, 13h44

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