Oracle、sqlserver逐月累加

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 03:32   52   0

动态追加日累计、月累计:
测试表tb_test_over 中有SCRQ、RSJ两列,存储每日的日数据;
select * from tb_test_over ;


使用OVER函数动态追加列,根据SCRQ对RSJ累计求和;
select scrq,rsj,
sum(rsj) over(order by scrq) as nsj
from tb_test_over order by scrq;


使用OVER 结合 PARTITION BY 对每月进行累加;
select scrq,rsj,sum(rsj)
over(partition by to_char(scrq,'yyyy-mm') order by scrq) ysj
from tb_test_over
order by scrq;


综合版,查询日、月、年累加数据;
select scrq,rsj,
sum(rsj) over(partition by to_char(scrq,'yyyy-mm') order by scrq) ysj,
sum(rsj) over(order by scrq) as nsj
from tb_test_over
order by scrq;


5、最后追加一个动态字符列转行技巧;
有'A,B,V,C,D,S,A'这么一个字符串,根据逗号,将数据输出到每行;

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;

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP