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

Langage SQL Discussion :

Probleme Pivot et Derby embedded


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 47
    Points : 30
    Points
    30
    Par défaut Probleme Pivot et Derby embedded
    Bonjour,


    J'essaie de faire une sorte de tableau croisé dynamique avec une base de données gérée par Derby embedded.

    Je tape la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT Code_COM, DPE_ENER, NBLOG
    FROM Sc_Initial
    PIVOT
    (
      SUM(NBLOG)
      FOR [DPE_ENER] IN ([A],[B],[C],[D])
    )
    AS p
    Il me met une erreur au niveau du SUM. Si je remplace SUM par MAX j'ai la même erreur. Pourtant je trouve que cette forme sur internet.

    Je voudrais savoir comment corriger l'erreur et si ce n'est pas possible comment faire autrement.

    Merci d'avance.

    Edit :
    En mettant cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      select com, SUM(NBLOG) as D
        from SC_INITIAL
       where DPE_ENER  = 'D'
         and code_EPCI = 245600341
    group by COM
    J'ai une colonne de mon tableau croisé ensuite en changeant D par A,B,C j'ai les autres.
    Comment faire pour tous les avoir dans le même tableau ?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    La fonction PIVOT n'existe à ma connaissance que dans Microsoft SQL-Server 2005+ et Oracle Database 11gR1+.

    La solution sans pivot s'écrit ainsi :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      select com,
             sum(case dpe_ener when 'A' then nblog end) as dpe_ener_a,
             sum(case dpe_ener when 'B' then nblog end) as dpe_ener_b,
             sum(case dpe_ener when 'C' then nblog end) as dpe_ener_c,
             sum(case dpe_ener when 'D' then nblog end) as dpe_ener_d
        from sc_initial
       where dpe_ener in ('A', 'B', 'C', 'D')
         and code_epci = 245600341
    group by com
    order by com asc;

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Il aime pas dpe_ener a la ligne 2 colonne 19 pourtant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT com, SUM(NBLOG) AS D
        FROM SC_INITIAL
       WHERE DPE_ENER  = 'D'
         AND code_EPCI = 245600341
    GROUP BY COM
    marche!!!

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Peut-être que Derby Embedded ne connaît pas la fonction CASE, mais là c'est plus grave que PIVOT !
    Ou alors l'autre syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      SELECT com,
             sum(case when dpe_ener = 'A' then nblog end) AS dpe_ener_a,
             sum(case when dpe_ener = 'B' then nblog end) AS dpe_ener_b,
             sum(case when dpe_ener = 'C' then nblog end) AS dpe_ener_c,
             sum(case when dpe_ener = 'D' then nblog end) AS dpe_ener_d
        FROM sc_initial
       WHERE dpe_ener IN ('A', 'B', 'C', 'D')
         AND code_epci = 245600341
    GROUP BY com
    ORDER BY com ASC;

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Merci, tu me sauves la vie. Ce site m'a toujours donné les bonnes réponses et cela en moins d'une journée (Ici en 2heures seulement).

    Vous êtes super. Merci encore.

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

Discussions similaires

  1. JSF/JPA probleme avec les classes embedded
    Par sorown dans le forum JSF
    Réponses: 0
    Dernier message: 02/04/2014, 13h15
  2. JAR et Derby Embedded
    Par Invité dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 10/08/2012, 11h19
  3. trie caractéres accentuées avec derby embedded
    Par Mattorre dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 13/07/2010, 10h01
  4. derby embedded schéma introuvable
    Par Passarinho44 dans le forum NetBeans
    Réponses: 0
    Dernier message: 15/12/2008, 21h16
  5. [JDBC][Derby]Problèmes sur un runnable
    Par koko- dans le forum JDBC
    Réponses: 3
    Dernier message: 08/09/2005, 11h05

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