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 Oracle Discussion :

[11g] Query : Pivot?


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut [11g] Query : Pivot?
    Bonjour,

    J'ai un query qui me renvoie comme résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    COL1         COL 2
    -------------------------
    A                XX
    B                XX
    B                YY
    C                ZZ
    B                WW
    Je voudrais afficher un résultat comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
           XX     YY     ZZ  WW
    ----------------------------------
    A       1      
    B       1     1           1 
    C                    1
    Est-ce que cela est possible?

    J'avais pensé à faire cela avec un pivot sur 11g mais je n'y suis pas parvenu, avez-vous une idée ?

    Merci de votre aide

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Si le nombre des colonnes est connu d'avance
    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
    22
    23
    24
    25
     
    Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0 
    Connected as mni
     
    SQL> 
    SQL> With Data As (
      2    Select 'A' id,'XX' val From dual union all
      3    Select 'B','XX' From dual union all
      4    Select 'B','YY' From dual union all
      5    Select 'C','ZZ' From dual union all
      6    Select 'B','WW' From dual
      7  ) select id,
      8         max(case when val = 'XX' then 1 end) xx,
      9         max(case when val = 'YY' then 1 end) yy,
     10         max(case when val = 'ZZ' then 1 end) zz,
     11         max(case when val = 'WW' then 1 end) ww
     12    from data
     13    group by id
     14  /
     
    ID         XX         YY         ZZ         WW
    -- ---------- ---------- ---------- ----------
    A           1                       
    B           1          1                     1
    C                                 1

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Si vous voulez utiliser la fonction PIVOT :
    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
    With MaTable AS
    (
    select 'A' as c1, 'XX' as c2 from dual union all
    select 'B'      , 'XX'       from dual union all
    select 'B'      , 'YY'       from dual union all
    select 'C'      , 'ZZ'       from dual union all
    select 'B'      , 'WW'       from dual
    )
    select *
      from MaTable
     pivot ( count(*) for c2 in ('XX', 'YY', 'ZZ', 'WW'));
     
    C1	'XX'	'YY'	'ZZ'	'WW'
    A	1	0	0	0
    B	1	1	0	1
    C	0	0	1	0

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    Merci!

    Est-il possible de remplacer les valeurs du IN par un select pour éviter d'harcoder ?

    IN ( SELECT ... )

    Edit:
    voir ci-dessous :

    http://www.oracle.com/technology/pub...11g-pivot.html

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

Discussions similaires

  1. DataPump oracle 11g : Plusieurs QUERY
    Par alexisongagna dans le forum Import/Export
    Réponses: 1
    Dernier message: 20/12/2011, 18h02
  2. pivot+ oracle 11g
    Par zorro13 dans le forum Oracle
    Réponses: 5
    Dernier message: 24/10/2011, 23h04
  3. Je ne retrouve pas ma SP dans Query analyser
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/07/2003, 12h43
  4. Query data set
    Par Sandra dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/01/2003, 10h08
  5. [XMLRAD] Décoder Request.Query
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 8
    Dernier message: 10/01/2003, 16h40

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