Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1816 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème group by

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème group by

n°2228480
Llorenzacc​io
Posté le 20-05-2014 à 11:38:47  profilanswer
 

Bonjour,
 
j'ai une question sur une de mes requêtes :
 

Code :
  1. select
  2. case
  3.     when d.deal_numadm!=0 and d.deal_numadm is not null
  4.         then 'MA' || d.deal_nummas || '_' || d.ntt_id
  5.     when d.deal_numadm=0 or d.deal_numadm is null
  6.         then 'Master' || d.deal_nummas || '_' || d.ntt_id
  7. end as node_id,
  8. sum(cva.cva), sum(dva.dva), d.deal_numadm, d.deal_nummas
  9. from acc_processed_cva cva
  10. left outer join acc_processed_dva dva on dva.deal_id = cva.deal_id
  11. join acc_deals d on d.deal_id = cva.deal_id and d.deal_scope='Y'
  12. join dt_runs r on r.run_id = cva.run_id and r.deal_cnt_id = d.deal_cnt_id
  13. where r.run_id=57 and d.deal_nummas=10700 and d.ntt_id = 1731413
  14. group by d.ntt_id, d.deal_nummas, d.deal_numadm, d.deal_cnt_id, d.ntt_id;


 
Dans cette requête, le select d.deal_numadm est juste là pour montrer qu'il est différent dans chacune des lignes retournées par la requête :
 

NODE_ID             SUM(CVA.CVA)    SUM(DVA.DVA)    DEAL_NUMADM DEAL_NUMMAS
MA10700_1731413     953180          1373440         22012       10700
Master10700_1731413 4886330         4318999         0           10700
MA10700_1731413     1654            1192            12054       10700
MA10700_1731413     4               (null)          83442       10700
MA10700_1731413     14              1093            10775       10700
MA10700_1731413     963             (null)          10779       10700


 
Ce que je voudrais, c'est une requête qui retourne ça (sans le d.deal_numadm):
 

NODE_ID             SUM(CVA.CVA)    SUM(DVA.DVA)     DEAL_NUMMAS
MA10700_1731413     955815          1375725          10700
Master10700_1731413 4886330         4318999          10700


 
avec la 1ere ligne qui soit la somme des lignes 1, 3, 4, 5 et 6 du résultat précédent.
 
J'ai essayé en enlevant le d.deal_numadm du group by de la requête, mais évidemment ça ne marche pas :
 

Code :
  1. select
  2. case
  3.     when d.deal_numadm!=0 and d.deal_numadm is not null
  4.         then 'MA' || d.deal_nummas || '_' || d.ntt_id
  5.     when d.deal_numadm=0 or d.deal_numadm is null
  6.         then 'Master' || d.deal_nummas || '_' || d.ntt_id
  7. end as node_id,
  8. sum(cva.cva), sum(dva.dva), d.deal_nummas
  9. from acc_processed_cva cva
  10. left outer join acc_processed_dva dva on dva.deal_id = cva.deal_id
  11. join acc_deals d on d.deal_id = cva.deal_id and d.deal_scope='Y'
  12. join dt_runs r on r.run_id = cva.run_id and r.deal_cnt_id = d.deal_cnt_id
  13. where r.run_id=57 and d.deal_nummas=10700 and d.ntt_id = 1731413
  14. group by d.ntt_id, d.deal_nummas, d.deal_cnt_id, d.ntt_id;


 

ORA-00979: not a GROUP BY expression  
00979. 00000 - "not a GROUP BY expression"


 
C'est possible de faire ce que je veux ?


Message édité par Llorenzaccio le 20-05-2014 à 17:47:41
mood
Publicité
Posté le 20-05-2014 à 11:38:47  profilanswer
 

n°2228491
Soileh
Lurkeur professionnel
Posté le 20-05-2014 à 12:21:58  profilanswer
 

:hello: !
 
As-tu essayé de rajouter le champ "node_id" dans ta clause GROUP BY ? :??:


---------------
And in the end, the love you take is equal to the love you make
n°2228508
rufo
Pas me confondre avec Lycos!
Posté le 20-05-2014 à 13:46:38  profilanswer
 

Clair, moi, j'aurais fait une simple GROUP BY node_id.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2228550
Llorenzacc​io
Posté le 20-05-2014 à 17:46:54  profilanswer
 

Yep, mais ça marche pas.
 
Par contre j'ai fait comme ça :
 

Code :
  1. select
  2. case
  3.     when d.deal_numadm!=0 and d.deal_numadm is not null
  4.         then 'MA' || d.deal_nummas || '_' || d.ntt_id
  5.     when d.deal_numadm=0 or d.deal_numadm is null
  6.         then 'Master' || d.deal_nummas || '_' || d.ntt_id
  7. end as node_id,
  8. sum(cva.cva), sum(dva.dva)
  9. from acc_processed_cva cva
  10. left outer join acc_processed_dva dva on dva.deal_id = cva.deal_id
  11. join acc_deals d on d.deal_id = cva.deal_id and d.deal_scope='Y'
  12. join dt_runs r on r.run_id = cva.run_id and r.deal_cnt_id = d.deal_cnt_id
  13. where r.run_id=57 and d.deal_nummas=10700 and d.ntt_id = 1731413
  14. group by d.ntt_id, d.deal_nummas, case
  15.     when d.deal_numadm!=0 and d.deal_numadm is not null
  16.         then 'MA' || d.deal_nummas || '_' || d.ntt_id
  17.     when d.deal_numadm=0 or d.deal_numadm is null
  18.         then 'Master' || d.deal_nummas || '_' || d.ntt_id
  19. end;


 
:bounce:

n°2228551
rufo
Pas me confondre avec Lycos!
Posté le 20-05-2014 à 17:52:18  profilanswer
 

Bizarre que ça marche pas :/ t'es sous Mysql ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2228565
gpl73
Posté le 20-05-2014 à 19:58:49  profilanswer
 

bonsoir
dans le select :
----------------------------------------
1.select
2.case
3.    when d.deal_numadm!=0 and d.deal_numadm is not null
4.        then 'MA' || d.deal_nummas || '_' || d.ntt_id
5.    when d.deal_numadm=0 or d.deal_numadm is null
6.        then 'Master' || d.deal_nummas || '_' || d.ntt_id
7.end as node_id,
8.sum(cva.cva), sum(dva.dva), d.deal_nummas
9.from acc_processed_cva cva
----------------------------
 
il y a 2 champs et 2 sum
donc dans le group by il faut grouper sur les 2 champs :
node_id (ou réécrire le case) et d.deal_nummas
 
c'est "tout" simple...
 


---------------
mieux vaut être un con au chaud, qu'un con gelé lol

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème group by

 

Sujets relatifs
Problème avec une requete GROUP BY[Résolu][SQL/ACCESS] Problème COUNT / GROUP BY
Problème GROUP BYPHP SQL probleme ORDER BY , GROUP BY...
Requete SQL avec GROUP BY probleme[ MySQL ] - Problème avec GROUP BY - Help !
Problème de requete, COUNT, GROUP BY etc.Probleme de requête (group by)
Problème de GROUP BYProbleme avec GROUP BY
Plus de sujets relatifs à : Problème group by


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR