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
Другие вопросы по тегам