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 ...

1711638599092.png

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


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
    1711638249638.png
    17.4 KB · Affichages: 1

crocrocro

XLDnaute Occasionnel
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 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
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 ...
1712062996869.png
 

crocrocro

XLDnaute Occasionnel
C'est un problème de virgule :mad:
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
C'est un problème de virgule :mad:
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
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
C'est un problème de virgule :mad:
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
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
 

Statistiques des forums

Discussions
312 211
Messages
2 086 298
Membres
103 171
dernier inscrit
clemm