2016-10-28 2 views
-1

Я хочу получить счет за последние 7 дней на каждый день.SQL Server: Получить отчет за последние 7 дней за каждый день

Итак:

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 

Я бы много больше записи охватывающей дальше назад. Я хотел бы получить счет всех вхождений типа за последние 7 дней за каждый день. Поэтому для

2016-5-31 

Я бы хотел, чтобы столбец результатов имел сумму из предыдущих семи дней, ведущих до 5-31. Тогда для 5-30 я хотел бы сделать то же самое.

+0

ваш ожидаемый результат неясен. можете ли вы объяснить, как вы достигли 5 для 2016-05-31? –

+0

потому что есть 5 штук 1 за последние 7 дней – Kalimantan

+0

Я могу добавить все 7 дней, чтобы сделать его более ясным – Kalimantan

ответ

2

Если 2012+ Вы можете использовать функции Окна с п о предшествующем

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 

Возвращает

enter image description here

+0

хороший Джон .. я не смог придумать этот ответ вовремя. –

+0

@vkp Я уверен, что вы были просто отвлечены (наблюдая за Скуби-Ду?). BTW спасибо за UpVote. Вы толкнули меня более 200 за день с оставшимися 19 минутами. –

Смежные вопросы