Oracle生成等距序列

Oracle生成等距序列

最近项目中有一个按时间区间统计数量的需求,于是乎查询了一些资料,通过先生成等距序列,再联数据列查询的方式实现。

1.生成等距数值序列

select rownum as day from dual connect by rownum <=12

结果如下:
在这里插入图片描述

2.生成本周的日期序列

SELECT
to_char(to_date(to_char(trunc(next_day(sysdate-8, 1)+1), 'MM-dd'), 'MM-dd')+ LEVEL - 1, 'MM-dd') day
FROM DUAL
CONNECT BY LEVEL <= to_date(to_char(trunc(next_day(sysdate-8, 1)+7)+1, 'MM-dd'), 'MM-dd') -
to_date(to_char(trunc(next_day(sysdate-8, 1)+1), 'mm-dd'), 'mm-dd')

结果如下:
在这里插入图片描述

3.生成本月的日期序列

SELECT
to_char(to_date(to_char(TRUNC(SYSDATE, 'MM'), 'MM-dd'), 'MM-dd')+ LEVEL -1, 'MM-dd') day
FROM DUAL
CONNECT BY LEVEL <= to_date(to_char(last_day(SYSDATE), 'MM-dd'), 'MM-dd')+1 -
to_date(to_char(TRUNC(SYSDATE, 'MM'), 'MM-dd'), 'MM-dd')

结果如下:
在这里插入图片描述

4.生成本年的时间序列

SELECT
TO_CHAR(ADD_MONTHS(TO_DATE(to_char(trunc(sysdate, 'yyyy'), 'yyyy-MM'), 'yyyy-MM'), ROWNUM - 1), 'yyyy-MM') day
FROM DUAL
CONNECT BY ROWNUM <= 12

结果如下:在这里插入图片描述
通过生成以上序列联立数据列后,可实现如下的统计效果:
在这里插入图片描述
注:以上方法仅个人摸索使用,可能还有其他更优写法,仅供参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值