生成连续数值
方式一:查询rownum
SELECT ROWNUM AS RN FROM EMP WHERE ROWNUM<=10;
方式二:通过树形查询的子句提取
SELECT LEVEL AS RN FROM DUAL CONNECT BY LEVEL <= 10;
应用
在数据分析取同比/环比时,为避免取到错误的比对对象(年月份之间不连续)需要生成连续的年月及默认值。
- 示例:利用full join和树形查询生成2020-2023年间每月的默认值为月份的数据集。
Select ydate.ynumber * 100 + mdate.mnumber ymnumber, mdate.mnumber defaultvalue
From (Select 2019 + Level ynumber From dual Connect By Level <= 3) ydate
Full Join (Select Level mnumber From dual Connect By Level <= 12) mdate
On 1 = 1;
- 结果:
1 202001 1
2 202002 2
3 202003 3
4 202004 4
5 202005 5
6 202006 6
7 202007 7
8 202008 8
9 202009 9
10 202010 10
11 202011 11
12 202012 12
13 202101 1
14 202102 2
15 202103 3
16 202104 4
17 202105 5
18 202106 6
19 202107 7
20 202108 8
21 202109 9
22 202110 10
23 202111 11
24 202112 12
25 202201 1
26 202202 2
27 202203 3
28 202204 4
29 202205 5
30 202206 6
31 202207 7
32 202208 8
33 202209 9
34 202210 10
35 202211 11
36 202212 12
博客介绍了在Oracle数据库中生成连续数值的两种方式,一是查询rownum,二是通过树形查询的子句提取。还提到在数据分析取同比/环比时,为避免错误比对,需生成连续年月及默认值,并给出利用full join和树形查询生成特定数据集的示例。

597

被折叠的 条评论
为什么被折叠?



