В таблице у меня есть пробег в день. Теперь я хочу запрос, который дает мне мили в неделю. Поэтому я подумал, что я беру значение MAX с этой недели и значение MAX с прошлой недели, и разница - это мой ответ. Но как я могу сделать это в запросе?
Моя таблица выглядит так:
Date Object Value
2020-01-03 Mileage 12500
2020-01-06 Mileage 12850
2020-01-07 Mileage 13020
2020-01-10 Mileage 13200
2020-01-14 Mileage 13660
2020-01-16 Mileage 13700
Мой запрос выглядит так:
SELECT dbo.Getyearweek([Date]) as ThisWeek
,Object
,MAX([Value]) as ThisWeekMax
,(SELECT MAX([Value])
FROM [MyTable]
WHERE dbo.Getyearweek(dateadd(day, -7, [Date])) ) as LastWeekMax
,MAX([ThisWeekMax]) - MAX([LastWeekMax]) as Difference
FROM [MyTable]
WHERE [Date] > dateadd(year, -1, GetDate())
GROUP BY dbo.Getyearweek([Date]), Object
Getyearweek () - это функция и дает в результате год и номер недели указанной даты. Для даты 2020-01-03: 2020_01 Для даты 2020-01-07: 2020_02 et c.
Я ожидаю такой результат:
ThisWeek Object ThisWeekMax LastWeekMax Difference
2020_02 Mileage 13200 12500 700
2020_03 Mileage 13700 13200 500