PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Général » Pb du à migration V8.3 -> V9.2.4 » 12/04/2013 11:22:48

guegs
Réponses : 1

Bonjour,
je suis un petit nouveau sur Postgresql et même en informatique tout court. Je bosse en stage sur la migration vers la V9.2.4.
Je suis confronté à quelques difficultés de transtypages, et autres subtilité que je découvre au fur et à mesure du debug de l' application.

Voici mon pb:

j'ai la requête suivante :
   SELECT               
CASE EXTRACT(month from nomdebase.date_debut + interval '3 days')         
WHEN 1 THEN 'janvier'         
WHEN 2 THEN 'février'         
WHEN 3 THEN 'mars'         
WHEN 4 THEN 'avril'         
WHEN 5 THEN 'mai'         
WHEN 6 THEN 'juin'         
WHEN 7 THEN 'juillet'         
WHEN 8 THEN 'août'         
WHEN 9 THEN 'septembre'         
WHEN 10 THEN 'octobre'         
WHEN 11 THEN 'novembre'         
WHEN 12 THEN 'décembre'   
END
  FROM nomdebase
  group by EXTRACT(month from nomdebase.date_debut + interval '3 days') 
celle ci fonctionne bien sur V8.3 mais plus sur V9.2 avec ce message d'erreur:

ERREUR:  la colonne «  nomdebase.date_debut » doit apparaître dans la clause GROUP BY ou doit être utilisé dans une fonction d'agrégat
LINE 2: CASE EXTRACT(month from  nomdebase.date_debut + interval '3 days') ...
                                ^

********** Erreur **********

ERREUR: la colonne «  nomdebase.date_debut » doit apparaître dans la clause GROUP BY ou doit être utilisé dans une fonction d'agrégat
État SQL :42803
Caractère : 173

J 'ai corrigé le pb en mettant un alias sur le "case" et en faisant un group by "mon alias", ce qui donne:

  SELECT               
CASE EXTRACT(month from nomdebase.date_debut + interval '3 days')         
WHEN 1 THEN 'janvier'         
WHEN 2 THEN 'février'         
WHEN 3 THEN 'mars'         
WHEN 4 THEN 'avril'         
WHEN 5 THEN 'mai'         
WHEN 6 THEN 'juin'         
WHEN 7 THEN 'juillet'         
WHEN 8 THEN 'août'         
WHEN 9 THEN 'septembre'         
WHEN 10 THEN 'octobre'         
WHEN 11 THEN 'novembre'         
WHEN 12 THEN 'décembre'   
END as essai
  FROM nomdebase
  group by essai

Donc ça marche sauf que je ne peut pas me permettre de réécrire les requêtes, donc connaitriez-vous une astuce pour de nouveau pourvoir exécuter la première requête?
Peut être peut on assigner un alias par défaut lors d'une condition case en faisant un polymorphisme de cette fonction,... ou autre je ne sais pas.
Merci

PS: si vous avez une expérience dans le même type de migration et que vous êtes prêt a la faire partager, n’hésitez pas à me contacter.
Guegs

Pied de page des forums

Propulsé par FluxBB