-- 一年12月的sql
select to_char(sysdate, 'yyyy-') || lpad(level, 2, 0) datevaluefrom dual
connect by level < 13;/*
--结果
DATEVALUE
2020-01
2020-02
2020-03
2020-04
2020-05
2020-06
2020-07
2020-08
2020-09
2020-10
2020-11
2020-12*/with temps as(select to_char(sysdate,'yyyy') || lpad(level,2,0) mon from dual connect by level<13)
SELECT * FROM temps;

oracle获取今年在内的前几年、后几年

--前几年
-- eg 前3年
select to_char(sysdate, 'yyyy') - level + 1 years from dual connect by level <= 3 order by years;
/*
结果YEARS
1   2018
2   2019
3   2020
*/--后几年
-- eg 后3年
select to_char(sysdate, 'yyyy') + level - 1 years from dual connect by level <= 3 order by years;
/*
结果YEARS
1   2020
2   2021
3   2022
*/

附  connect by level 的使用

获取连续数字示例代码:

-- 获取连续的数据(注意:level只用使用<,<=,=符号)
select level from dual connect by level <= 5 ;
/*
--结果LEVEL
1   1
2   2
3   3
4   4
5   5
*/

获取连续的日期示例代码:

-- 获取连续的指定时间(注意:获取连续的时间需要包含当天需要再+1天)
select sysdate-level+1 days from dual connect by level <= 5 order by days;
/*
--结果DAYS
1   2019/12/30 11:09:40
2   2019/12/31 11:09:40
3   2020/1/1 11:09:40
4   2020/1/2 11:09:40
5   2020/1/3 11:09:40
*/

统计填充示例代码:

/*问题:查询1981年每月入职的人数,没有入职的以0补充解决:1.创建一个连续的年份表进行关联2.关联的条件,截取时间相等进行关联3.注意:a.需要所有的时间,因此要让时间表主表b.如果emp表有条件,要单独在(SELECT * FROM emp)中添加,不然会影响结果,导致时间不全c.使用其他函数,如SUM求和可能为空用NVL函数,这里以count函数举例
*/
SELECT times.days 月份,NVL(COUNT(e.EMPNO),0) 入职人数 FROM (SELECT * FROM emp) e
RIGHT JOIN (select TO_CHAR(ADD_MONTHS(TO_DATE('1981-12-01', 'yyyy-MM-dd'),-LEVEL+1),'yyyy-MM') days FROM dual CONNECT BY LEVEL <= 12
) times
ON SUBSTR(TO_CHAR(e.HIREDATE,'yyyy-MM-dd hh24:mi:ss'), 0, 7) = times.days
GROUP BY times.days
ORDER BY times.days

oracle 查询一年12个月的sql,获取今年在内的前几年、后几年相关推荐

  1. oracle 查询一年12个月的sql

    select to_char(sysdate, 'yyyy-') || lpad(level, 2, 0) datevalue from dual connect by level < 13

  2. Oracle查询某一天日期数据的SQL语句的几种写法

    本文章向大家介绍Oracle查询某一天日期数据的SQL语句的几种写法,主要包括Oracle查询某一天日期数据的SQL语句的几种写法使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值, ...

  3. Oracle查询某个日期的周一到周日SQL语句

    Oracle查询某个日期的周一到周日SQL语句 SELECT TRUNC(to_date('2021-12-27','YYYY-MM-DD'),'IW')+(ROWNUM-1)*6 FROM dual ...

  4. sql查询今年的12个月的统计数据

    1.查出1~12 SELECT @xi:=@xi+1 as id from (SELECT 1 UNION SELECT 2 UNION SELECT 3) xc1, (SELECT 1 UNION ...

  5. MYSQL查询一年中12个月的数据,补全12个月.

    1.建立12个月的视图 CREATE VIEW 12_month_view AS SELECT 01 AS month UNION SELECT 02 AS month UNION SELECT 03 ...

  6. MySQL查询统计今年12个月的数据,没有默认为空

    此处先省略二百字的废话 做报表统计的时候,常常需要在MySQL端用sql统计近12个月的数据,或者近30天的数据. 假如遇到当月没有数据,或者当天没有数据时,默认为0. SELECTCASE WHEN ...

  7. MySQL获取近12个月数据SQL

    ##获取近12个月数据 SELECT TYEAR,TMONTH,CONCAT(SUBSTRING(TYEAR,3),'/',TMONTH) AS T_TIME,MARKETNAME,SJJY_WGDL ...

  8. oracle查询上个月数据(次月某日查询上月数据)

    查询今天数据: SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,'YYYY-MM-DD')=TO_CHAR(SYSDATE,'YYYY ...

  9. mysql查询补齐12个月_MySQL查询12个月数据,无数据补0

    1.数据库  和表就用自己的,下面是代码 select case month(shi_com_time) when '1' then sum(mileage) else 0 end as 一月份, c ...

最新文章

  1. 操作系统学习:Linux0.12初始化详细流程-进程退出与系统进入怠速
  2. 学科顶尖!这些高校,“双一流”潜力股!
  3. 腾讯地图api将物理地址转化成坐标
  4. 如何在Kaggle 首战中进入前 10%
  5. 数据加载中gif_淮师大GIF加载中......
  6. oracle并行和并发,Oracle 并发查询
  7. 群体智能优化算法之烟花算法(Fireworks Algorithm,FWA)
  8. 硬件设计40之什么是I2S、PCM、MP3?
  9. Windows10 添加打印机
  10. ValueError: Input 0 of node ... was passed float from ... incompatible with expected float_ref.
  11. 错误:.TemplateProcessingException: Exception evaluating SpringEL expression:
  12. 汇报:阳光事业在阳光下进行
  13. 软件工程课程第二次任务——需求分析与原型设计
  14. 如何实现学生评语的导入
  15. java SQL常用语句总结大全(超详细)
  16. 2023阿里云账号注册流程(多种注册方法随便选)
  17. 初中计算机科学生情况,初中计算机科学与技术的现代化运用探究
  18. 为什么网页无法正常显示
  19. Python中随机数的生成
  20. 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )

热门文章

  1. Unity在OpenGL模式下Shader编译报错
  2. Could not find messages which '/home/flying/catkin_ws/src/beginner_tutorials/msg/Num.msg' depends
  3. 时间序列分析中的ARMA,ARIMA,ARC…
  4. 如何查看是否有清华源/删除清华源,保留默认源
  5. H5/C3实践(2) --3D导航栏旋转木马
  6. PAT5-06. 航空公司VIP客户查询
  7. 虚拟机RedHatEenterpriseLinux5安装及Oracle10.2.0安装手记收藏
  8. 基于oracle查询锁表和解锁的处理方法
  9. python 配置文件一般用什么格式_配置文件格式,哪个最强?
  10. 极客公园创新大会十周年首日看点:前沿思考论坛