[hard core] requête dur dur
Bonjour,
j'ai un léger problème avec une requete sql.
Je travail sur une table Compte.
Un seul champ m'intéresse, la date de création (CreatedOn) qui est un datetime.
Mon but final est de créer une courbe sur le nombre de compte en fonction du temps.
J'utilise sql reporting services, je dois donc créer une requête qui me renverra ceci :
Code:
1 2 3 4 5
|
DATE Nombre total
juin 2005 1
Juillet 2005 5
Novembre 2005 8 |
le nombre total étant le nombre total de comptes au mois en question et non pas seulement le nombre de compte créés par mois.
pour cela, je sais faire un group by me permettant de connaitre le nombre de compte créés par mois.
Code:
1 2 3 4 5 6
|
select DATENAME(month, createdOn) + ' ' + DATENAME(yy, createdOn) AS Mois_Année,count(*) as somme
from account act1
where statecode = 0
group by
DATENAME(month, createdOn) + ' ' + DATENAME(yy, createdOn) |
ce qui donne :
Code:
1 2 3 4 5 6 7 8 9 10
|
août 2004 3
août 2005 6
avril 2004 4
février 2005 1
février 2006 1
juin 2004 3
mai 2004 2
novembre 2004 5
octobre 2005 1 |
Il faudrait donc que je fasse la requête qui me renvoi le nombre la somme des comptes créés précédement groupé par mois.
j'ai essayé ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
select DATENAME(month, createdOn) + ' ' + DATENAME(yy, createdOn) AS Mois_Année,count(*) as somme,
sum(
(select count(*) as 'somme' from account act2
where statecode= 0
And act2.createdOn<=act1.createdOn
group by
DATENAME(month, createdOn) + ' ' + DATENAME(yy, createdOn))
)
from account act1
where statecode = 0
group by
DATENAME(month, createdOn) + ' ' + DATENAME(yy, createdOn) |
Mais sql server me jette gentiment en précisant:
Code:
1 2
| Serveur : Msg 130, Niveau 15, État 1, Ligne 8
Impossible d'exécuter une fonction d'agrégation sur une expression comportant un agrégat ou une sous-requête. |
Merci d'avance, j'espère avoir été clair.