
Oracle、sqlserver逐月累加
发布日期:2021-05-14 05:50:58
浏览次数:17
分类:精选文章
本文共 1217 字,大约阅读时间需要 4 分钟。
使用OVER函数实现累计计算
当需要对SCRQ(日期)进行累加时,可以通过OVER函数来实现日累计、月累计及年累计的数据计算。以下是各个累计功能的实现方法:
1. 日累计(按天累加)
使用OVER函数对SCRQ进行排序后,对RSJ字段累加。SQL语句如下:
SELECT scrq, rsj, Sum(rsj) OVER(ORDER BY scrq) AS nsj FROM tb_test_over ORDER BY scrq;
- scrq:表示日期字段,作为排序依据。
- rsj:被累加的字段。
- nsj:累加后的结果字段,表示按天累计的RSJ值。
2. 月累计(按月累加)
对于月累计,可以通过PARTITION BY函数来按月份分组,并按SCRQ排序。SQL语句如下:
SELECT scrq, rsj, Sum(rsj) OVER(PARTITION BY to_char(scrq, 'yyyy-mm') ORDER BY scrq) AS ysj FROM tb_test_over ORDER BY scrq;
- scrq:日期字段。
- rsj:被累加的字段。
- ysj:累加后按月的结果字段。
- to_char(scrq, 'yyyy-mm'):用于将日期格式转换为YYYY-MM形式,便于分组。
3. 综合版:日、月、年累加
可以在同一查询中实现多个累计功能。SQL语句如下:
SELECT scrq, rsj, Sum(rsj) OVER(PARTITION BY to_char(scrq, 'yyyy-mm') ORDER BY scrq) AS ysj, Sum(rsj) OVER(ORDER BY scrq) AS nsj FROM tb_test_over ORDER BY scrq;
- scrq:日期字段。
- rsj:被累加的字段。
- ysj:按月累加的结果字段。
- nsj:按天累加的结果字段。
5. 字符串转行技巧
数据字符串处理
有字符串 A,B,V,C,D,S,A
,要求将数据按逗号分隔输出到每行。可以借助REGEXP_SUBSTR函数实现。SQL语句如下:
SELECT REGEXP_SUBSTR('A,B,V,C,D,S,A', '[^,]+', 1, ROWNUM) AS str FROM DUAL CONNECT BY ROWNUM <= LENGTH('A,B,V,C,D,S,A') - LENGTH(REPLACE('A,B,V,C,D,S,A', ',', '')) + 1;
- REGEXP_SUBSTR:用于提取不包含逗号的字符序列。
- ROWNUM:表示行号。
- LENGTH(...) - LENGTH(...):计算有效字符长度。
逐行输出
通过上述方式,每一个符合条件的字符序列都会被单独输出至一行,实现了字符串按逗号分隔的行性输出。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月10日 17时39分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2017物联网安全事件盘点
2019-03-11
他来了他来了,他带着云栖大会的免费门票走来了
2019-03-11
Oracle笔记
2019-03-11
JS实现删除行按钮只有一行时不能删除
2019-03-11
有问题找男人帮忙- Linux下man命令
2019-03-11
如何复用外部shell脚本
2019-03-11
VTK:小部件之SeedWidgetWithCustomCallback
2019-03-11
JAVA集合类Collection浅析
2019-03-11
嵌入式软件工程师职业路线
2019-03-11
获取linux 主机cpu类型
2019-03-11
限流的算法有哪些?
2019-03-11
Failed to notify build listener.
2019-03-11
TextWiew单个线条
2019-03-11
Android Studio updating indices 一直刷新和闪烁
2019-03-11
基于vant-ui的时间选择器二次封装
2019-03-11
个人购买服务器问题?
2019-03-11
pwntools编写技巧
2019-03-11
Python开发常见漏洞
2019-03-11
How2Heap笔记(三)
2019-03-11