Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/12/2010, 12h02   #1
Membre à l'essai
 
Inscription : juillet 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 92
Points : 21
Points : 21
Par défaut [SQL 2008] Requête : Cumul sur 12 mois glissants

Bonjour,

Je dois fournir des statistiques (cumul des CV reçus sur l'année et cumul des CV reçus sur 12 mois glissants).

Voici les données de la table que je dois exploiter (l'historique commence à partir de Juin 2009):

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
Year  Month  Count
2009	6	8
2009	7	117
2009	8	128
2009	9	204
2009	10	208
2009	11	169
2009	12	122
2010	1	159
2010	2	67
2010	3	79
2010	4	66
2010	5	50
2010	6	41
2010	12	16
2011	1	15
2011	2	32
2011	3	100
2011	4	151
2011	5	80
2011	6	75
2011	7	93
2011	8	49
2011	9	55
2011	10	112
2011	11	125
2011	12	250
Je voudrais obtenir le cumul sur 12 mois glissants avec une requête mais je n'y arrive pas...
Queqlu'un aurait-il une idée ?

Merci
mad_martigan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 14h31   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

Cette requete doit vous donner le cumul sur les 12 derniers mois (mois en cours exclus, soit pour aujourd'hui, de décembre 2009 a novembre 2010 inclus), sinon il faut jouer sur le > ou >=

Code sql :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT SUM([count])
FROM MaTable
WHERE (
	[year] = YEAR(GETDATE()
	AND [month] < MONTH(GETDATE())
	)
OR	(
	[year] = YEAR(GETDATE() -1
	AND [month] >= MONTH(GETDATE())
)


Attention cependant au choix du nom de vos colonnes :
year est un mot reservé
month est un mot reservé
count est un mot reservé

vous avez fait fort
J'espere que vous n'avez pas appelé votre table STATISTICS
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 15h18   #3
Membre à l'essai
 
Inscription : juillet 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 92
Points : 21
Points : 21
Bonjour,

Merci pour votre requête, j'avais résolu le pb entre temps mais votre requête est plus courte, donc je pense que je vais l'adopter.

Pour info, ce n'est pas moi qui ai nommé les colonnes ainsi mais un collègue


Merci
mad_martigan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 15h34   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Il y a un tas de façons de faire, avec des performances très différentes, en fonction des index sur votre tables.

d'ailleurs je dirai que ma requete sera meilleure ainsi :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
SELECT SUM(Somme)
FROM (
    SELECT SUM([count]) AS Somme
    FROM MaTable
    WHERE (
    	[year] = YEAR(GETDATE()
	AND [month] < MONTH(GETDATE())
    	)
    UNION ALL
    SELECT SUM([count]) AS Somme
    FROM MaTable
    WHERE(
	[year] = YEAR(GETDATE() -1
	AND [month] >= MONTH(GETDATE())
    )
)

Je suppose que vous avez un index sur (Year, Month) !?
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 17h35   #5
Membre à l'essai
 
Inscription : juillet 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 92
Points : 21
Points : 21
Oui il y a un index
mad_martigan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h32.


 
 
 
 
Partenaires

Hébergement Web