GOOGLE ADS

понедельник, 2 мая 2022 г.

как рассчитать значение YTD (год до даты) в таблице Oracle

Есть таблица и ее данные выглядят так:

year month v1 v2 
2017 1 2 3
2017 2 4 5
.........
2017 12 9 3
2018 1 1 3
2018 2 6 2
.........
2018 12 2 2

в таблице есть год, месяц, v1, v2 всего 4 поля, теперь я хочу, чтобы SQL вычислял значение YTD для каждой строки, результат запроса выглядит следующим образом:

year month v1 v2 v1_YTD v2_YTD
2017 1 2 3 2 3
2017 2 4 5 6 8
.............
2017 12 9 3 m1 n1
2018 1 1 3 1 3
2018 2 6 2 7 5
.............
2018 12 2 2 m2 n2

Значение с начала года, например, рассчитывается для февраля, тогда значение с начала года = январь + февраль, если месяц декабрь, значение с начала года должно быть значением для января + февраля + марта +...+ декабря.

Значение с начала года не должно пересекать год.

Есть ли SQL может достичь этой цели?


Решение проблемы

Вы можете использовать аналитическую функцию SUM() OVER()

SELECT year, month, v1, v2,
SUM(v1) OVER (PARTITION BY year ORDER BY month) AS v1_ytd,
SUM(v2) OVER (PARTITION BY year ORDER BY month) AS v2_ytd
FROM table_name
ORDER BY year, month;

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...