Vous n'êtes pas identifié(e).
Pages : 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
Hors ligne
Je suis très étonné que la première requête passait, quelque soit la version. Mais bon, non, vous n'avez pas d'autres choix que de les corriger.
Guillaume.
Hors ligne
Pages : 1