Рассчитать прибыль последовательных лет, добавив прибыль предыдущего года - PullRequest
0 голосов
/ 28 июня 2019

Пример данных и ожидаемый результат представлен на изображении:

sample data

Нам нужно сложить прибыль предыдущего года с последовательным годом и отобразить данные в формате, указанном на рисунке (примерные данные также представлены на рисунке).

Пожалуйста, помогите мне с SQL-запросом, чтобы решить эту проблему.

Ответы [ 3 ]

1 голос
/ 28 июня 2019

Вы также можете написать это, используя функцию окна.

SELECT
    Year,
    SUM(Profit) OVER(ORDER BY Year) AS Total_Profit
FROM your_table
ORDER BY Year
0 голосов
/ 28 июня 2019

Использовать сумму по разделу:

WITH V1 AS (
    SELECT 2015 AS YEAR, 1000 AS PROFIT FROM DUAL
    UNION ALL SELECT 2016 AS YEAR, 2000 AS PROFIT FROM DUAL
    UNION ALL SELECT 2017 AS YEAR, 500 AS PROFIT FROM DUAL
    UNION ALL SELECT 2018 AS YEAR, 1000 AS PROFIT FROM DUAL
)
SELECT 
    V1.YEAR
    , PROFIT --- You can comment it if not needed
    , SUM(PROFIT) OVER (PARTITION BY 1 ORDER BY YEAR RANGE UNBOUNDED PRECEDING) AS PROFIT_CUM
FROM V1;
0 голосов
/ 28 июня 2019

Это, наверное, самый простой в мире рекурсивный CTE, который вы могли бы найти. Но вот оно:

declare @years table(y int, p int)
insert @years values (2015,1000),(2016,2000),(2017,500),(2018,1000)
; with cumulative as
(
    select top 1 * from @years order by y
    union all
    select y.y, y.p+c.p
    from @years y
    join cumulative c on y.y=c.y+1
)
select * from cumulative

Результат:

y       p
2015    1000
2016    3000
2017    3500
2018    4500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...