Мое понимание для еа ch в вашей таблице, вы хотите увидеть сумму Order1 для себя и каждой записи, которая имеет значение Date в течение четырех недель до первичной записи. Здесь вы идете:
create table MysteryTable
(
PurchasingId int not null primary key identity(1,1),
Order1 money not null,
[Date] date not null
)
insert MysteryTable(Order1, [Date]) values (1.00, '2013-04-21')
insert MysteryTable(Order1, [Date]) values (2.00, '2013-04-14')
insert MysteryTable(Order1, [Date]) values (3.00, '2013-04-07')
insert MysteryTable(Order1, [Date]) values (4.00, '2013-03-31')
insert MysteryTable(Order1, [Date]) values (5.00, '2013-03-24')
select
t1.PurchasingId
, t1.Order1
, t1.Date
, SUM(ISNULL(t2.Order1, 0)) FourWeekTotal
from
MysteryTable t1
left outer join MysteryTable t2
on DATEADD(ww, -4, t1.Date) <= t2.Date and t1.Date > t2.Date
group by
t1.PurchasingId
, t1.Order1
, t1.Date
order by
t1.Date desc
Объяснение:
Присоединяйтесь к таблице на себя, t1, представляющий записи вернуться, t2 быть записи в совокупности. Присоединяйся к дате t1 минус четыре недели, будучи меньше или равным дате t2, а дата t1 больше, чем Дата t2. Затем группируйте записи по полям t1 и сумме t2.Order1. Левое внешнее соединение должно учитывать одну запись, которая не будет иметь никаких предыдущих данных.
Откуда вы получаете стоимость 14,00 – Justin
ЗакупкиID 2 + 3 + 4 + 5 – Colbs