Мои данные выглядят примерно так
ProductNumber | YearMonth | Number
1 201803 1
1 201804 3
1 201810 6
2 201807 -3
2 201809 5
Теперь я хочу добавить дополнительную запись "6MSum", которая представляет собой сумму за последние 6 месяцев на номер продукта (не последние 6 записей),Обратите внимание, что данные YearMonth не полны, для каждого ProductNumber есть промежутки между ними, поэтому я не могу просто использовать последние 6 записей для суммы.Окончательный результат должен выглядеть примерно так:
ProductNumber | YearMonth | Number | 6MSum
1 201803 1 1
1 201804 3 4
1 201810 6 9
2 201807 -3 -3
2 201809 5 2
Кроме того, я не хочу вставлять сумму в таблицу, а вместо этого использую ее в запросе:
SELECT [ProductNumber],[YearMonth],[Number],
6MSum = CONVERT(INT,SUM...)
FROM ...
Iнашел много решений, которые используют «сумму за период», но только для последних X записей, а не для фактического условного заявления «YearMonth за последние 6 месяцев».
Любая помощь будет принята с благодарностью!
Это база данных SQL
РЕДАКТИРОВАТЬ / Ответ
Похоже, что пробелы в месяцах должнызаполнить данными, после чего что-то вроде
sum(Number) OVER (PARTITION BY category
ORDER BY year, week
ROWS 6 PRECEDING) AS 6MSum
должно работать.
Ссылка на решение: https://dba.stackexchange.com/questions/181773/sum-of-previous-n-number-of-columns-based-on-some-category