SQL Server - присвоение (сумма) объема последних 52 недель данной неделе
Я пытаюсь использовать секционирование в SQL для оценки комплексного значения
Это сумма объема от последних 56 до 4 недель в данных за неделю.
Атрибуты таблицы: продукт, магазин, неделя, категория, объем
Данные: более 150 недель данных,
Цель: выберите значение для CategoryWeekVolume, которое представляет собой сумму объема за последние 56-4 недели для данной категории.
Пробовал: я пробовал case-whens, over-partition-by в нескольких комбинациях, но я не настолько опытен, когда дело доходит до SQL, и я понятия не имею, как сделать это умным способом, не добавляя 52 колонки объемом от недели-4 до недели-56.
Общее состояние t0.[WEEK]-t1.[WEEK]>4 and t0.[WEEK]-t1.[WEEK]<57
и сумма должна быть в каждой категории.
Я бы очень признателен за любые материалы.
1 ответ
Если предположить, Week
является INT
:
SELECT
Category,
Week,
SUM(Volume) AS CategoryWeekVolume
FROM
tablename
WHERE
Week
BETWEEN
(SELECT MAX(Week) FROM tablename) - 56
AND
(SELECT MAX(Week) FROM tablename) - 4
GROUP BY Category, Week