SQL Server - присвоение (сумма) объема за последние 52 недели данной неделе

Я пытаюсь использовать партиционирование в SQL для оценки сложного значения

Это сумма объема данных за последние 56–4 недель до данной недели.

Атрибуты таблицы: Товар, Магазин, Неделя, Категория, Объем.

Данные: данные за более чем 150 недель,

Цель: выберите значение для CategoryWeekVolume, которое представляет собой сумму объемов за последние 56–4 недель для данной категории.

Пробовал: я пробовал использовать регистр, когда, избыточное разделение в нескольких комбинациях, но у меня нет опыта, когда дело доходит до SQL, и я не знаю, как это сделать в умный способ, без добавления 52 столбцов с объемом от 4 недели до 56 недели.

Общее условие - t0.[WEEK]-t1.[WEEK]>4 and t0.[WEEK]-t1.[WEEK]<57, и сумма должна быть по категории.

Буду очень признателен за любой вклад.


person KacperK    schedule 21.12.2018    source источник
comment
Здесь действительно помогут образцы данных, ожидаемые результаты (в формате text или операторов DDL и DML) и ваши попытки (фактический SQL, который вы написали).   -  person Larnu    schedule 21.12.2018


Ответы (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
person forpas    schedule 21.12.2018