SQL Server - присвоение (сумма) объема последних 52 недель данной неделе - PullRequest
0 голосов
/ 21 декабря 2018

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

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

Атрибуты таблицы: продукт, магазин, неделя, категория, объем

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

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

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

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

Я бы очень признателен за любые материалы.

1 Ответ

0 голосов
/ 21 декабря 2018

Предполагая, 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
...