Bonjour à tous,

Je fais souvent des requêtes sur des lignes contenant une date.
Ces requêtes doivent typiquement renvoyer des sommes, groupées par mois ou année.
Donc du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
SELECT CAST(DATENAME(yy, matable.madate) + '/' + DATENAME(mm, matable.madate) AS datetime) AS mois, 
                      SUM(matable.monNombre) as nb
FROM   matable
GROUP BY CAST(DATENAME(yy, matable.madate) + '/' + DATENAME(mm, matable.madate) AS datetime)
ORDER BY mois
Bien sûr il y a souvent des trous dans l'échelle de temps : des mois/années pour lesquelles il n'y a pas de données.
D'habitude je bouche les trous via une fonction programmatique qui complète le dataset renvoyé par ma requête.

Est-il possible de le faire directement dans la requête, en considérant que l'échelle de temps est limitée entre deux dates connues ?
(C'est pour utiliser dans les Reporting Services de Microsoft: il ne me paraît pas possible d'utiliser la première méthode dans ce contexte).

Une idée ?