gpt4 book ai didi

sql - 如何计算 Oracle 表中的 YTD(年初至今)值

转载 作者:行者123 更新时间:2023-12-02 09:09:34 42 4
gpt4 key购买 nike

有一个表,它的数据是这样的:

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

YTD值,比如计算2月,那么YTD值=1月+2月,如果月份是12月,YTD值应该是1月+2月+3月+...+12月的值。

YTD 值不应跨年。

有没有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;

关于sql - 如何计算 Oracle 表中的 YTD(年初至今)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103823/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com