Peut-être quelque chose comme ça.
declare @T table (CreatedDate datetime, MoneySpent int)
insert into @T values
('201', 5),
('20100101', 10),
('20100102', 20),
('20100103', 30),
('20110104', 40),
('20110105', 50),
('20110106', 60),
('20110107', 70)
-- per year
select
sum(MoneySpent) Spent,
year(CreatedDate) [Year]
from @T
group by year(CreatedDate)
-- per month
select
sum(MoneySpent) Spent,
year(CreatedDate) [Year],
month(CreatedDate) [Month]
from @T
group by year(CreatedDate), month(CreatedDate)
-- per half year
select
sum(MoneySpent) Spent,
year(CreatedDate) [Year],
case when month(CreatedDate) <= 6 then 'First' else 'Second' end [HalfYear]
from @T
group by year(CreatedDate), case when month(CreatedDate) <= 6 then 'First' else 'Second' end
-- per quarter
select
sum(MoneySpent) Spent,
year(CreatedDate) [Year],
((month(CreatedDate)-1) % 4)+1 [Quarter]
from @T
group by year(CreatedDate), ((month(CreatedDate)-1) % 4)+1
-- per week
select
sum(MoneySpent) Spent,
year(CreatedDate) [Year],
datepart(iso_week, CreatedDate) [Week]
from @T
group by year(CreatedDate), datepart(iso_week, CreatedDate)
Résultat
Spent Year
----------- -----------
65 2010
220 2011
Spent Year Month
----------- ----------- -----------
60 2010 1
220 2011 1
5 2010 12
Spent Year HalfYear
----------- ----------- --------
60 2010 First
220 2011 First
5 2010 Second
Spent Year Quarter
----------- ----------- -----------
60 2010 1
220 2011 1
5 2010 4
Spent Year Week
----------- ----------- -----------
220 2011 1
5 2010 52
60 2010 53
Vous devrez fournir plus de détails sur votre schéma/base de données pour quelqu'un pour vous aider un peu mieux, mais vous cherchez des fonctions d'agrégation ici, quelque chose comme: SEMAINE SELECT (e.CreateDate) Semaine, SUM (Dépenses) SemainesExpédition FROM Dépenses e WHERE YEAR (e.CreateDate) = 2011 GROUPE PAR SEMAINE (e.CreateDate). S'il vous plaît noter que c'est un pseudo-code car il n'y a pas de DB et les fonctions de date ont tendance à différer – Mirko
bien im en utilisant SQL Server 2008 ... Et il dit qu'il n'y a pas intégré dans la fonction hebdomadaire ... Le truc c'est que j'ai besoin d'une idée trouvé ces clients frais dans différents intervalles dans la même requête ... Notez que les clients sont irréguliers. –