2010-05-19 5 views
-3

Je prévois d'obtenir un rapport d'une table avec une structure de tableau suivant:T-SQL requête pour obtenir SUM (COUNT())

ID    RequestDate 
----------------------------- 
1    2010/01/01 
2    2010/02/14 
3    2010/03/20 
4    2010/01/07 
5    2009/03/31 

Je veux que les résultats que: I

D_Count RequestDate    Sum 
----------------------------------------- 
2    2010/01    2 
1    2010/02    3 
2    2010/03    5 

Aide de SVP.

+0

Voulez-vous dire T-SQL? 'RequestDate' est un' varchar' ou 'datetime'? –

+0

qu'est-ce que vous additionnez? –

+0

RequestDate est DateTime et je somme D_Count – Ashish

Répondre

5

Il vous suffit de regrouper l'année et les éléments de date mois de la table pour obtenir le nombre par mois et l'année:

select 
    count(*), datePart("yy", requestDate) + "/" + datePart("mm", requestDate) 
from table1 
group by 
datePart("yy", requestDate), datePart("mm", requestDate) 

Pour obtenir la somme de ceux-ci vous devez avoir une table temporaire et puis mettez à jour cette colonne de somme de la table temporaire avec le total cumulé.

create table #temp (rowID identity(1,1) int, dateCount int, yearMonth varchar(50), runningTotal int) 

insert into #temp (dateCount, yearMonth, runningTotal) 
    select 
     count(*), datePart("yy", requestDate) + "/" + datePart("mm", requestDate) 
    from table1 
    group by 
    datePart("yy", requestDate), datePart("mm", requestDate) 

update #temp set runningTotal = (select sum(dateCount) from #temp a where a.rowID < #temp.rowID) 

select * from #temp 

drop table #temp 
+0

Non. Cela ne résout pas la requête – Ashish

+0

+1: étant donné le manque d'informations, c'est sur le meilleur qui peut être fait – RedFilter

+0

Cela a résolu ma requête. – Ashish