Difficulte avec Group By

Difficulte avec Group By - SQL/NoSQL - Programmation

Marsh Posté le 20-08-2009 à 00:53:19    

Hello tout le monde.
 
J'ai des petites difficultes avec une clause GROUP BY.
 
Voici ma requete:

Code :
  1. select
  2. COUNT(R.REF_NUM),
  3. DECODE(R.Z_CASE_TYPE,'441101','Request','441102','Incident'),
  4. to_char(FCT_GET_FMTDATE(R.OPEN_DATE),'MM/YYYY') AS "MOIS"
  5. from CALL_REQ R, CTCT C
  6. where R.GROUP_ID=C.ID
  7. and (C.C_LAST_NAME like '%_par_%'  or C.C_LAST_NAME like '%_lon_%' or C.C_LAST_NAME like '%_eur_%' or C.C_LAST_NAME like '%_wwi_%')
  8. AND R.OPEN_DATE  >=  FCT_GET_NUMDATE(to_date('06/01/2009','MM/DD/YYYY'))
  9. AND R.OPEN_DATE  <=  FCT_GET_NUMDATE(to_date('07/31/2009','MM/DD/YYYY'))
  10. GROUP BY "MOIS",R.Z_CASE_TYPE;


 
Outre l'evidente nooberie du code, Oracle me renvoie l'erreur suivante: "ORA-00904: "TEST": invalid identifier"
 
De toute evidence, il n'aime pas que je "nomme" mon champ "MOIS". Le probleme, c'est que si je fais un GROUP BY R.OPEN_DATE, R.Z_CASE_TYPE, il me sort des tas de resultats, alors que j'en attends au maximum 4. Je pense qu'il n'effectue pas la "conversion" du champ de date comme je veux le faire en utilisant la fonction to_char et la proc fct_get_fmtdate.
 
Comment le "forcer" a accepter de faire un group sur un champ nomme?


---------------
Autonomie, Excellence, But
Reply

Marsh Posté le 20-08-2009 à 00:53:19   

Reply

Marsh Posté le 20-08-2009 à 08:33:20    

pas moyen, tu dois mettre.
 

Code :
  1. GROUP BY DECODE(R.Z_CASE_TYPE,'441101','Request','441102','Incident'),to_char(FCT_GET_FMTDATE(R.OPEN_DATE),'MM/YYYY')


Reply

Marsh Posté le 20-08-2009 à 09:39:27    

casimimir a écrit :

pas moyen, tu dois mettre.
 

Code :
  1. GROUP BY DECODE(R.Z_CASE_TYPE,'441101','Request','441102','Incident'),to_char(FCT_GET_FMTDATE(R.OPEN_DATE),'MM/YYYY')




ca ne vient pas des guillemets qu'oracle n'aimerait pas? il semble que j'avais déja vu fonctionner en mettant le nom d'un champ dans un group by (ou alors un sort peut être)...

Reply

Marsh Posté le 20-08-2009 à 10:15:05    

les guillements a ce niveau ne posent pas de soucis, mais ca reste une mauvaise idée de les utiliser car cela rend le champ case sensitive.
 
on ne peut pas utiliser d'alias dans un group by, par contre on peut utiliser un numéro de colonne dans un order by, style order by 2 desc, 1 asc

Reply

Marsh Posté le 20-08-2009 à 15:14:56    

casimimir a écrit :

pas moyen, tu dois mettre.
 

Code :
  1. GROUP BY DECODE(R.Z_CASE_TYPE,'441101','Request','441102','Incident'),to_char(FCT_GET_FMTDATE(R.OPEN_DATE),'MM/YYYY')




Ah, on peut utiliser les memes fonctiones et procs dans le group by que dans le select? Je ne savais pas, tien :jap:
 
Finalement, ca revient au meme, donc.
 
J'essaie ca tout a l'heure au boulot [:shay]


---------------
Autonomie, Excellence, But
Reply

Sujets relatifs:

Leave a Replay

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