
如上图,求每个YM累积到上一年末的AMOUNT合计值。
比如: 202502上一年末 = 202412,那么202502的AMOUNT合计值 = 202412的AMOUNT + 202411的AMOUNT , 即230
。同理202501也是230。202412和202411的上一年末 = 202312 ,所以是0
SQL怎么写

如上图,求每个YM累积到上一年末的AMOUNT合计值。
比如: 202502上一年末 = 202412,那么202502的AMOUNT合计值 = 202412的AMOUNT + 202411的AMOUNT , 即230
。同理202501也是230。202412和202411的上一年末 = 202312 ,所以是0
SQL怎么写
关注让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!可以使用如下的SQL来解决这个问题:
with recursive cte as (
select ID, AMOUNT, YEAR, CAST(substr(YEAR, 1, 4) as integer) as YEAR_INT
from your_table
where substr(YEAR, 5, 2) = '12'
union all
select t.ID, t.AMOUNT + c.AMOUNT, t.YEAR, c.YEAR_INT
from your_table t
join cte c on t.ID = c.ID and substr(t.YEAR,1,4) = CAST(c.YEAR_INT + 1 as string)
)
select ID, AMOUNT, YEAR
from cte
order by ID, YEAR;
在这个SQL语句中,使用递归CTE (common table expression) 来不断累加上一年末的AMOUNT值。首先选出所有月份为"12"的记录作为起始点,然后依次向上递归计算。最后得到每个YM累积到上一年末的AMOUNT合计值。