2016-10-28 10 views
-1

Ich möchte die Anzahl der letzten 7 Tage für jeden Tag erhalten.SQL Server: Anzahl der letzten 7 Tage für jeden Tag

So:

updateDate Type  ResultOfSqlStatement 
2016-05-31 Thing1   5 
2016-05-31 Thing2 
2016-05-31 Thing3 
2016-05-30 Thing1 
2016-05-29 Thing2 
2016-05-28 Thing1 
2016-05-28 Thing3 
2016-05-27 Thing1 
2016-05-26 Thing1 

Ich würde viel mehr aufnehmen müssen weiter zurück überspannen. Ich möchte die Anzahl aller Vorkommen eines Typs für die letzten 7 Tage für jeden Tag erhalten. Also für

2016-5-31 

Ich würde wollen, dass die Ergebnisspalte die Summe der vorherigen sieben Tage vor 5-31 haben. Dann für 5-30 würde ich das Gleiche tun wollen.

+0

Ihr erwartetes Ergebnis unklar ist. kannst du erklären, wie du für 2016 am 2016-05-31 bei 5 angekommen bist? –

+0

weil es 5 Ding 1 für die letzten 7 Tage gibt – Kalimantan

+0

Ich könnte alle 7 Tage hinzufügen, um es klarer zu machen – Kalimantan

Antwort

2

Wenn 2012+ Sie die Fensterfunktionen mit der vorhergehenden Klausel

Declare @YourTable table (updateDate date,Type varchar(25)) 
Insert Into @YourTable values 
('2016-05-31','Thing1'), 
('2016-05-31','Thing2'), 
('2016-05-31','Thing3'), 
('2016-05-30','Thing1'), 
('2016-05-29','Thing2'), 
('2016-05-28','Thing1'), 
('2016-05-28','Thing3'), 
('2016-05-27','Thing1'), 
('2016-05-26','Thing1') 

Select *,ThingCount=sum(1) over(Partition By Type order by updateDate rows between 7 preceding and current row) 
From @YourTable 

Returns können

enter image description here

+0

guten einen John .. ich konnte nicht mit dieser Antwort rechtzeitig kommen. –

+0

@vkp Ich bin sicher, du warst nur abgelenkt (beobachtete Scoobie Doo?). BTW danke für die UpVote. Du hast mich über 200 für den Tag gedrängt mit noch 19 Minuten. –

Verwandte Themen