Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Sql*Plus
Sql*Plus Forum d'entraide sur Oracle Sql*Plus
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2008, 10h19   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 9
Points : 2
Points : 2
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?
Olivier06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 10h19   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
recherche PIVOT sur le forum
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 12h01   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 9
Points : 2
Points : 2
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
Olivier06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 13h42   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 13h48   #5
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
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 866
Points : 3 448
Points : 3 448
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
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 14h06   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
je dis de chercher PIVOT parce que c'est le terme souvent employé pour ces problèmatiques de lignes en colonnes
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2008, 11h45   #7
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
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 :
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
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2008, 09h21   #8
Invité de passage
 
Inscription : janvier 2008
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 9
Points : 2
Points : 2
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 :
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
Olivier06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2008, 09h55   #9
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
désolé, ça a apparu en 10gR1
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2008, 13h51   #10
Invité de passage
 
Inscription : janvier 2008
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 9
Points : 2
Points : 2
Et donc pas de solution pour faire ça en 9i?
Olivier06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2008, 14h23   #11
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Code :
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
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 11h55   #12
Invité de passage
 
Inscription : janvier 2008
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 9
Points : 2
Points : 2
ça marche nickel Laurent, merci beaucoup
Olivier06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 12h01   #13
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 14h31   #14
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
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
Citation:
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
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h15.


 
 
 
 
Partenaires

Hébergement Web