J'ai un rapport qui doit totaliser le nombre d'inscriptions par semaine, au cours des dix dernières semaines et l'afficher comme(SQL) Regroupement par la fin de la semaine
« Semaine se terminant le 10 Octobre, 2009 » 500"
"semaine du 3 octobre 2009" 400"
"semaine se terminant le 26 Septembre 2009" 1000"
etc ...
Voici ma question:
SELECT Count(*) as [Total]
,Week = DateAdd(day, -1 * datepart(dw, CONVERT(varchar,CreateDate,101)), CONVERT(varchar,CreateDate,101))
FROM aspnet_membership WITH (nolock)
WHERE CreateDate BETWEEN CAST(CONVERT(varchar, DATEADD(ww, -10, DATEADD(dd, -(DATEPART(dw, GETDATE()) - 1), GETDATE())), 101) AS DATETIME) AND
DateAdd(day, -1 * datepart(dw, CONVERT(varchar,Getdate(),101)), CONVERT(varchar,GetDate(),101))
GROUP BY DateAdd(day, -1 * datepart(dw, CONVERT(varchar,CreateDate,101)), CONVERT(varchar,CreateDate,101))
ORDER BY [Week] DESC
La clause entre fait un entre 08/02/2009 et 10/10/2009, mais les résultats ne contiennent pas de dossiers pour la semaine du 10 Octobre, même bien qu'il y ait des milliers dans la DB.
Je suppose que je suis soit en train de regrouper par quelque chose de façon incorrecte, ou quelque chose.
Toute aide serait grandement appréciée.
Formule fonctionne, mais vous vous demandez pourquoi vous CONVERT CreateDate à un champ varchar? Il semble bien fonctionner sans le CONVERT. – Andomar
Je viens de copier la formule de JackM - je suppose qu'il avait une raison de faire la conversion. – Martha