我是靠谱客的博主 迷路曲奇,这篇文章主要介绍ORACLE——一条SQL计算同比、环比,现在分享给大家,希望可以做个参考。

 按照月份进行计算:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT D.YEARMONTH, D.VALUE, TO_CHAR(NVL(ROUND(DECODE(D.monthOnMonth,0,NULL,(D.VALUE - D.monthOnMonth )/D.monthOnMonth * 100),2), 0), 'fm9999999990.00') || '%' 环比增长率, TO_CHAR(NVL(ROUND(DECODE(D.yearOnYear,0,NULL,(D.VALUE - D.yearOnYear)/D.yearOnYear * 100),2), 0),'fm9999999990.00') || '%' 同比增长率 FROM ( SELECT C.YEARMONTH, C.VALUE, LAG (C.VALUE, 1, 0) OVER (ORDER BY C.YEARMONTH) AS monthOnMonth, LAG (C.VALUE, 12, 0) OVER (ORDER BY C.YEARMONTH) AS yearOnYear FROM ( SELECT A.YEARMONTH, NVL(B.VALUE, 0) VALUE FROM (SELECT TO_CHAR( ADD_MONTHS( TO_DATE( '202101', 'yyyyMM' ), ROWNUM - 1), 'yyyyMM') AS YEARMONTH FROM DUAL CONNECT BY ROWNUM <= months_between( to_date('202212', 'yyyyMM'), to_date( '202101', 'yyyyMM')) + 1) A LEFT JOIN ( SELECT TO_CHAR(CYJSSJ, 'yyyyMM') YEARMONTH, NVL(COUNT(*), 0) VALUE FROM BA_JBXX WHERE TO_CHAR(CYJSSJ, 'yyyyMM') >= 202101 AND TO_CHAR(CYJSSJ, 'yyyyMM') <= 202212 GROUP BY TO_CHAR(CYJSSJ, 'yyyyMM') ORDER BY TO_CHAR(CYJSSJ, 'yyyyMM') ) B ON A.YEARMONTH = B.YEARMONTH ORDER BY A.YEARMONTH ) C ) D WHERE D.YEARMONTH >= 202001 AND D.YEARMONTH <= 202212

 

最后

以上就是迷路曲奇最近收集整理的关于ORACLE——一条SQL计算同比、环比的全部内容,更多相关ORACLE——一条SQL计算同比、环比内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部