somme et conversion

somme et conversion - SQL/NoSQL - Programmation

Marsh Posté le 12-07-2005 à 14:39:38    

Je dispose d'une requete :
 

Code :
  1. select c_dev_cr,sum(n_ca_dr)
  2. from
  3. (SELECT RPAD(REC_FACTURE.C_DEV_DR,5) C_DEV_DR,
  4. SUM(TO_CHAR(REC_FACTURE.N_CA_FACT_DR,'999999999999999D00')) N_CA_DR
  5. FROM REC_FACTURE where c_ent='"&reqEnt&"'
  6. GROUP BY RPAD(REC_FACTURE.C_DEV_DR,5)
  7. UNION
  8. SELECT RPAD(REC_COMMANDE.C_DEV_DR,5) C_DEV_DR,
  9. SUM(TO_CHAR(REC_COMMANDE.N_CA_CDE_DR,'999999999999999D00')) N_CA_DR
  10. FROM REC_COMMANDE where c_ent='"&reqEnt&"'
  11. GROUP BY RPAD(REC_COMMANDE.C_DEV_DR,5)
  12. UNION SELECT
  13. RPAD(REC_EXPEDITION.C_DEV_DR,5) C_DEV_DR,
  14. SUM(TO_CHAR(REC_EXPEDITION.N_CA_EXP_DR,'999999999999999D00')) N_CA_DR
  15. FROM REC_EXPEDITION where c_ent='"&reqEnt&"'
  16. GROUP BY RPAD(REC_EXPEDITION.C_DEV_DR,5))
  17. group by c_dev_dr


 
qui calcule une somme par devise sur plusieurs tables.
 
La requête me donne des valeurs en JPY, USD... Je dispose d'une table ttx_carat qui possède un champ n_ttx_conv_euro pour permettre la conversion des devises en euros. Cette table est mise à jour quotidiennement.  
 
Je voudrais donc en dessous du tableau (j'arrive à ce tableau avec la requête précédente)
 

Code :
  1. CAD  0
  2. EUR  36913426.28
  3. GBP  10779.43
  4. JPY  3916902.05
  5. PLN  182645.16
  6. THB  46316258.68
  7. USD  9476395.91


 
 
afficher le montant total en euro.  
 
je voudrais dans un premier temps récupérer les taux de change, pour les afficher dans une colonne du tableau ci-dessus, par devise. J'ai fait qque chose mais ca ne marche pas, alors je ne sais pas si on a le droit de faire ca...  
 
 

Code :
  1. select a.c_dev_cr, a.sum(n_ca_dr), b.n_ttx_conv_euro
  2. from
  3. (SELECT RPAD(REC_FACTURE.C_DEV_DR,5) C_DEV_DR,
  4. SUM(TO_CHAR(REC_FACTURE.N_CA_FACT_DR,'999999999999999D00')) N_CA_DR
  5. FROM REC_FACTURE where c_ent='"&reqEnt&"'
  6. GROUP BY RPAD(REC_FACTURE.C_DEV_DR,5)
  7. UNION
  8. SELECT RPAD(REC_COMMANDE.C_DEV_DR,5) C_DEV_DR,
  9. SUM(TO_CHAR(REC_COMMANDE.N_CA_CDE_DR,'999999999999999D00')) N_CA_DR
  10. FROM REC_COMMANDE where c_ent='"&reqEnt&"'
  11. GROUP BY RPAD(REC_COMMANDE.C_DEV_DR,5)
  12. UNION SELECT
  13. RPAD(REC_EXPEDITION.C_DEV_DR,5) C_DEV_DR,
  14. SUM(TO_CHAR(REC_EXPEDITION.N_CA_EXP_DR,'999999999999999D00')) N_CA_DR
  15. FROM REC_EXPEDITION where c_ent='"&reqEnt&"'
  16. GROUP BY RPAD(REC_EXPEDITION.C_DEV_DR,5)) a, ttx_carat b
  17. where b.c_dev=a.c_dev_dr and b.d_modif=to_date(sysdate,'DD/MM/YYYY')
  18. group by c_dev_dr


 
 
en executant la requete en asp, ca plante...  
 
sur le serveur a.sum invalid indentifier... j'ai donc degagé le a.  
 
Code:  
 
ERROR at line 1:  
ORA-00979: not a GROUP BY expression  
 
 
 
ce serait gentil si vous pouviez m'aider a resoudre ce probleme...ze seche un peu :fou:
Merci

Reply

Marsh Posté le 12-07-2005 à 14:39:38   

Reply

Marsh Posté le 12-07-2005 à 15:39:31    

une tite ame charitable svp???:(

Reply

Marsh Posté le 12-07-2005 à 16:18:51    

il manque un group by global, à moins que le "sum()" de la première ligne ne soit superflu.

Reply

Marsh Posté le 12-07-2005 à 16:24:11    

salut
deja merci pour ta reponse, je commencais a desesperer!!!
 
par contre c quoi group by global, parce que le sum est tres important!!???
 
edit:
 
je viens d'essayer group by global sur oracle--> ORA-00904: "GLOBAL": invalid identifier


Message édité par nachi2 le 12-07-2005 à 16:30:23
Reply

Marsh Posté le 12-07-2005 à 16:44:03    

ben t'as :
 
select ... from (select  ... union ... )
=> bah tout à la fin de la requête (je te conseille de mettre ton group de UNION à l'intérieur de paranthèses) il faut remettre un group by, puisque tu fais une fonction d'agrégation sur un champ de ton packet d'union

Reply

Marsh Posté le 12-07-2005 à 16:44:41    

erf, mal lu :D
 
il manque b.n_ttx_conv_euro    dans ton dernier group by

Reply

Marsh Posté le 12-07-2005 à 17:37:23    

merci!!!!!!!!!!!!!!!!!!!!!!!!!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed