#sql #sql-server #sum #sql-order-by #aggregate-functions
#sql #sql-сервер #сумма #sql-порядок по #агрегатные функции
Вопрос:
Я хочу написать SQL-запрос (SQL Server), в котором я могу накапливать значения столбца, но я хочу снова начать накопление, если начинается новый год.
Например, у меня есть такая таблица:
В настоящее время мой запрос выглядит следующим образом:
SELECT *, SUM(value) OVER (ORDER BY YEAR ASC, Monthnum ASC) as RESULT
from TABLE
ORDER BY YEAR DESC, MONTHNUM DESC
И мой результат выглядит так:
Но чего я действительно хочу, так это чтобы мой результат был таким:
Ответ №1:
Только partition by
год:
SELECT *, SUM(value) OVER (PARTITION BY YEAR ORDER BY Monthnum) as RESULT
from TABLE --^--> here
ORDER BY YEAR DESC, MONTHNUM DESC