connect by level是属于oracle的一种语法,一般用来生成一些固定的连续递增的数字或者日期等
栗子: 我想要生成[1-10]之间的连续生成的数字
SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL <= 10
结果:
再举一个栗子,假如我要生成19年1月1日到22年12-31日的连续日期
SELECT to_date('20190101','yyyymmdd')+level-1
FROM DUAL
CONNECT BY LEVEL <= trunc(to_date('20221231','yyyymmdd') - to_date('20190101','yyyymmdd'))
这里为什么要对+level -1
因为 level是从1开始递增的 所以假如第三行就应该是 190101 + 3 -1 这样就凑出来的日期才是190103