• Initiateur de la discussion Initiateur de la discussion AngieMot33
  • Date de début Date de début
  • Mots-clés Mots-clés
    sql

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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: 10
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:
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
 
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
 
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
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.
 
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
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour