sql - 每年每个月的 SQL YTD
问题描述
我有下表:
oDate oValue
----------------------------
2017-01-01 40
2017-02-01 50
2017-03-01 60
2017-04-01 10
每个月只有一个数据。
然后,我想得到以下结果:
oDate oValue YTD
----------------------------------------
2017-01-01 40 40
2017-02-01 50 90
2017-03-01 60 150
2017-04-01 10 160
因此,该YTD
值是oValue
上个月的总和,它将在选定年份的 12 月结束。当新Year
的开始时,它会忽略上一年重新计算。
有没有人有这个想法?
谢谢你。
解决方案
只需使用运行总和功能:
select odate, ovalue,
sum(ovalue) over (partition by year(odate) order by odate) as ytd
from t;
这是一个窗口函数。每年partition by
重新计算总和。做一年内的order by
累计总和。
推荐阅读
- loopbackjs - 是否有任何环回 3 功能可以帮助修改然后构建过滤器?
- python - 如何在 django 中显示动态下拉菜单?
- java - 为什么在ios系统中不能处理Android应用程序?
- php - 多数据库开发模式
- spring - spring post加载资源失败:服务器响应状态为400(错误请求)
- tfs - 如何找到我现在拥有的文件版本?
- php - 如何修复错误 Kohana_Exception [0]:Model_Emails 类中不存在类型属性
- java - 如何在 Java 中加入两个位集?
- python - 在 Mac OS 10.14 上安装 thrift_sasl
- mongodb - 使用过滤器时在mongodb中检索具有数组索引的数组