Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres sql oracle

AngieMot33

XLDnaute Nouveau
Bonjour,

Je suis débutante et autodidacte et je rencontre un problème dans ma requête (SQL sous Oracle) suivante :

select PAESI.PAESI_CODEXT,
PAESI.PANES_COD,
PAEST.PAEST_DAT DATE_DPE,
PAEST.PAEST_VAL RESULTAT_DPE,
PAEST.PAEST_VAL RESULTAT_GES,
PAEST.PAEST_NUM CONSO_DPE,
PAEST.PAEST_NUM CONSO_GES,
PAEST.PAEST_VAL ADEME

from PAESI,
PAEST

WHERE PAESI.PAESI_NUM = PAEST.PAESI_NUM
AND PAESI.PANES_COD IN ('APP','APM','ETD','FOY','PAM','PAV','RSO')
AND PAEST.MGZDE_COD IN ('UDIG1','UDIG2','UDIG3','UDIG4','UDIG5','UDIG6')

Voici le résultat qu'elle m'affiche, or je souhaiterais 1 ligne ... j'ai essayé avec 1 group by mais erreur dans le code à chaque essai et je ne sais pas non plus utiliser la fonction CASE ou en tout cas comment la transcrire dans mon code ...


En première ligne ci-dessous ce que je souhaiterais obtenir comme résultat.


Est- ce que quelqu'un pourrait m'aider svp ?
Je vous remercie par avance, et vous souhaite une belle journée
 

Pièces jointes

  • 1711638249638.png
    17.4 KB · Affichages: 5

crocrocro

XLDnaute Impliqué
Bonjour Angie,
pour obtenir une seule ligne par niveau de regroupement, vous devez :
- faire un GROUP BY pour toutes les infos qui font partie du regroupement (ces informations pourront être affichées en résultat de la requête
- utiliser une fonction d'agrégation pour les autres infos à afficher (SUM, COUNT, AVERAGE ...), et seules les infos numériques (CONSO_DPE, CONSO_GES) s'y prêtent ici
- je n'ai aucun moyen de tester mais il me semble que la requête ci-dessous avec GROUP BY PAESI.PAESI_CODEXT (pour un regroupement sur CODEXT) devrait fonctionner
VB:
select PAESI.PAESI_CODEXT,
SUM(PAEST.PAEST_NUM CONSO_DPE),
SUM(PAEST.PAEST_NUM CONSO_GES),

from PAESI,
PAEST

WHERE PAESI.PAESI_NUM = PAEST.PAESI_NUM
AND PAESI.PANES_COD IN ('APP','APM','ETD','FOY','PAM','PAV','RSO')
AND PAEST.MGZDE_COD IN ('UDIG1','UDIG2','UDIG3','UDIG4','UDIG5','UDIG6')
GROUP BY PAESI.PAESI_CODEXT
GROUP BY PAESI.PAESI_CODEXT, PAESI.PANES_COD (pour un regroupement sur CODEXT et PANES_COD)
VB:
select PAESI.PAESI_CODEXT,
PAESI.PANES_COD
SUM(PAEST.PAEST_NUM CONSO_DPE),
SUM(PAEST.PAEST_NUM CONSO_GES),

from PAESI,
PAEST

WHERE PAESI.PAESI_NUM = PAEST.PAESI_NUM
AND PAESI.PANES_COD IN ('APP','APM','ETD','FOY','PAM','PAV','RSO')
AND PAEST.MGZDE_COD IN ('UDIG1','UDIG2','UDIG3','UDIG4','UDIG5','UDIG6')
GROUP BY PAESI.PAESI_CODEXT, PAESI.PANES_COD
 
Dernière édition:

AngieMot33

XLDnaute Nouveau
Bonjour CroCroCro !
Merci beaucoup pour votre réponse , en copiant le code voici le message d'erreur qui apparaît. Mais cela vient peut-être de la syntaxe qui est différente sur Oracle.
Je vais voir ce que dit la base de connaissances. En espérant comprendre ...
 

crocrocro

XLDnaute Impliqué
C'est un problème de virgule
Requêtes corrigées
Code:
select PAESI.PAESI_CODEXT,
SUM(PAEST.PAEST_NUM CONSO_DPE),
SUM(PAEST.PAEST_NUM CONSO_GES)

from PAESI,
PAEST

WHERE PAESI.PAESI_NUM = PAEST.PAESI_NUM
AND PAESI.PANES_COD IN ('APP','APM','ETD','FOY','PAM','PAV','RSO')
AND PAEST.MGZDE_COD IN ('UDIG1','UDIG2','UDIG3','UDIG4','UDIG5','UDIG6')
GROUP BY PAESI.PAESI_CODEXT

select PAESI.PAESI_CODEXT,
PAESI.PANES_COD,
SUM(PAEST.PAEST_NUM CONSO_DPE),
SUM(PAEST.PAEST_NUM CONSO_GES)

from PAESI,
PAEST

WHERE PAESI.PAESI_NUM = PAEST.PAESI_NUM
AND PAESI.PANES_COD IN ('APP','APM','ETD','FOY','PAM','PAV','RSO')
AND PAEST.MGZDE_COD IN ('UDIG1','UDIG2','UDIG3','UDIG4','UDIG5','UDIG6')
GROUP BY PAESI.PAESI_CODEXT, PAESI.PANES_COD
 

AngieMot33

XLDnaute Nouveau
Bonjour Crocrocro, alors j'aurai dû vous dire que j'avais modifié de moi- même les virgules car j'avais remarqué. Mais le message d'erreur persiste Je n'ai pas eu le temps de regarder le SAP Support. Je vais le faire aujourd'hui. En tout cas merci pour votre aide.
 

AngieMot33

XLDnaute Nouveau
Avec cette syntaxe cela fonctionne très bien
select PAESI.PAESI_CODEXT,
SUM(PAEST.PAEST_NUM) as CONSO_DPE,
SUM(PAEST.PAEST_NUM) as CONSO_GES

from PAESI,
PAEST

WHERE PAESI.PAESI_NUM = PAEST.PAESI_NUM
AND PAESI.PANES_COD IN ('APP','APM','ETD','FOY','PAM','PAV','RSO')
AND PAEST.MGZDE_COD IN ('UDIG1','UDIG2','UDIG3','UDIG4','UDIG5','UDIG6')
GROUP BY PAESI.PAESI_CODEXT

Merci beaucoup
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…