Bonjour

Au sein de requêtes diverses en triant par MOIS (peu importe le reste de la requête):

J'ai dans ma base les dates stockées sous le format: (xxxxxx étant les millièmes, centièmes de secondes, etc...)

'YYYYMMDDxxxxxx' => Ex: '20110101000000'

Une fonction Appelée dbo.F_VARCHAR_TO_DATETIME permet de convertir au format date

Si je veux afficher en Majuscule le MOIS je fais:

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT DISTINCT UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE))) FROM MATABLE

Mais si je veux trier par mois et fais:

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT DISTINCT UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE))) FROM MATABLE
	ORDER BY UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE)))
CELA NE ME TRIE PAS en JANVIER, FEV,MARS etc... mais dans l'ordre AOUT,AVRIL,DECEMBRE etc, c'est à dire par ordre ALPHABETIQUE


J'imagine qu'il faut faire le tri de la façon suivante:

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
	SELECT DISTINCT UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE)))FROM MATABLE
	ORDER BY SUBSTRING(MATABLE.MADATE,5,2)

Mais j'obtiens le message:

Les éléments ORDER BY doivent se retrouver dans la liste de sélection si SELECT DISTINCT est spécifié.

Si je rajoute au SELECT :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT DISTINCT UPPER(DATENAME(MONTH,dbo.F_VARCHAR_TO_DATETIME(MATABLE.MADATE))),SUBSTRING(MATABLE.MADATE,5,2) FROM MATABLE
	ORDER BY SUBSTRING(MATABLE.MADATE,5,2)
cela me multiplie les lignes...

JANVIER NULL
JANVIER
JANVIER 01
FÉVRIER 02
JANVIER 02
MARS 03
AVRIL 04
MAI 05
JUIN 06
JANVIER 06
JUILLET 07
JANVIER 08
AOÛT 08
SEPTEMBRE 09
JANVIER 09
OCTOBRE 10
NOVEMBRE 11
JANVIER 11
JANVIER 12
DÉCEMBRE 12
JANVIER 50


Que faudrait-il faire?

merci