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

Sql*Plus Oracle Discussion :

Affichage d'un Résultat sur plusieurs Colonnes


Sujet :

Sql*Plus Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Affichage d'un Résultat sur plusieurs Colonnes
    Bonjour,

    voilà, j'aimerais qu'une requète de ce genre :

    SELECT TNAME FROM TAB WHERE TABTYPE<>'VIEW' ORDER BY TNAME;

    Qui renvoit un grand nombre de résultats ne soit pas afficher sous forme de colonne unique comme habituellement :

    TNAME
    ------------------------------
    TABLE1
    TABLE2
    TABLE3
    TABLE4
    TABLE5
    TABLE6
    TABLE7
    TABLE8
    TABLE9
    TABLE10

    Mais plutôt un affcichage de cette forme :

    TNAME
    ----------
    TABLE1 TABLE2 TABLE3 TABLE4 TABLE5
    TABLE6 TABLE7 TABLE8 TABLE9 TABLE10

    Y a t'il une possibilité quelconque d'obtenir ce type d'affichage?

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    recherche PIVOT sur le forum

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta réponse, mais ce ne serait pas possible d'avoir un exemple concret ?

    Tout ce que j'ai vu sur les pivots est trés compliqué et utilise plusieurs colonnes, dont certaines pivotent, en utilisant des GROUP BY, mais ça ne correspond pas a ce que je veux, j'aimerais juste pivoter une seule colonne sur une seule table, et avoir un affichage différent.

    Un exemple simple sur la requête SELECT TNAME FROM TAB; ce serait bien

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    en effet, c'est très compliqué. SQL*Plus et le langage SQL en général ne sont pas fait pour gérer l'affichage. De fait, la présentation du résultat est parfois pénible à obtenir

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Il me semble que pivot n'est disponible qu'à partir de la 11g, non ? Je crois que c'est fait pour dispatcher les données en colonne. Là ce que Olivier06 veut faire c'est plus de la concaténation. Pour cela les fonctions d'aggrégation plus adaptées :
    http://download-west.oracle.com/docs...gg.htm#1004572

    Avec un exemple d'utilisation :
    http://asktom.oracle.com/pls/ask/f?p...:2196162600402

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    je dis de chercher PIVOT parce que c'est le terme souvent employé pour ces problèmatiques de lignes en colonnes

  7. #7
    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 orafrance Voir le message
    SQL*Plus et le langage SQL en général ne sont pas fait pour gérer l'affichage
    SQL*Plus a de très nombreuses fonctions pour gérer l'affichage. Combiné à SQL, je verrais bien ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SQL> col tname wor
    SQL> select replace(wm_concat(tname),',',' ') tname 
    from tab where tabtype!='VIEW' ;
     
    TNAME
    ------------------------------
    T R2 R3 R4 DEPT EMP BONUS
    SALGRADE T2 T1 DUMMY

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci Laurent pour ta solution, mais ça ne fonctionne pas correctement chez moi, même aprés avoir installé le package @?/rdbms/admin/owminst.plb en étant connecté avec l'utilisateur system, il se produit l'erreur :

    ORA-00904: "WM_CONCAT" : identificateur non valide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT owner,object_name FROM dba_procedures WHERE aggregate='YES'; donne le résultat suivant :
     
    OWNER                          OBJECT_NAME
    ------------------------------ ------------------------------
    SYS                              SYS_IXMLAGG
    MDSYS                          SDO_AGGR_UNION
    MDSYS                          SDO_AGGR_MBR
    MDSYS                          SDO_AGGR_LRS_CONCAT
    MDSYS                          SDO_AGGR_LRS_CONCAT_3D
    MDSYS                          SDO_AGGR_CONVEXHULL
    MDSYS                          SDO_AGGR_CENTROID

    J'utilise Oracle 9i, et apparement le package ne s'installe pas corerctement, comment y remédier?

    Merci

  9. #9
    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
    désolé, ça a apparu en 10gR1

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Et donc pas de solution pour faire ça en 9i?

  11. #11
    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
    SQL> col tname for a30 wor
    SQL> select replace(replace(xmlagg(xmlelement(tname,tname))
        ,'<TNAME>'),'</TNAME>', ' ') tname from tab;
    TNAME
    ------------------------------
    BINARY_DOUBLE_INFINITY BONUS
    DEPT DEVELOPPEMENT DOCCONTB
    EMP PERSONNES PLAN_TABLE
    SALGRADE SLST_RES_DOC
    SPERRORLOG T T1 T2

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    ça marche nickel Laurent, merci beaucoup

  13. #13
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par laurentschneider Voir le message
    SQL*Plus a de très nombreuses fonctions pour gérer l'affichage.
    certes, mais c'est pas vraiment prévu pour à la base

  14. #14
    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 orafrance Voir le message
    certes, mais c'est pas vraiment prévu pour à la base
    http://download.oracle.com/docs/cd/B...89/preface.htm
    The SQL*Plus User's Guide and Reference is intended for business and technical users and system administrators who perform the following tasks:

    *
    Develop and run batch scripts
    *
    Format, calculate on, store, print and create web output from query results
    *
    Examine table and object definitions
    *
    Perform database administration
    Sqlplus est un outil puissant pour formatter les resultats des requetes SQL

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

Discussions similaires

  1. Affichage d'un résultat sur plusieurs colonnes !
    Par Pithonnette dans le forum IHM
    Réponses: 2
    Dernier message: 04/08/2008, 11h30
  2. Résultat d'une requête sur plusieurs colonnes
    Par manucha dans le forum Oracle
    Réponses: 9
    Dernier message: 19/12/2007, 12h04
  3. [MySQL] affichage requete d'une colone sur plusieurs colonnes
    Par yohann26 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/10/2007, 16h11
  4. Réponses: 3
    Dernier message: 02/08/2007, 16h07
  5. [Tableaux] Affichage d'un résultat sur pls colonnes
    Par mullger dans le forum Langage
    Réponses: 5
    Dernier message: 23/11/2006, 13h18

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