oracle 查询一年12个月的sql,获取今年在内的前几年、后几年
-- 一年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,获取今年在内的前几年、后几年相关推荐
- oracle 查询一年12个月的sql
select to_char(sysdate, 'yyyy-') || lpad(level, 2, 0) datevalue from dual connect by level < 13
- Oracle查询某一天日期数据的SQL语句的几种写法
本文章向大家介绍Oracle查询某一天日期数据的SQL语句的几种写法,主要包括Oracle查询某一天日期数据的SQL语句的几种写法使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值, ...
- Oracle查询某个日期的周一到周日SQL语句
Oracle查询某个日期的周一到周日SQL语句 SELECT TRUNC(to_date('2021-12-27','YYYY-MM-DD'),'IW')+(ROWNUM-1)*6 FROM dual ...
- sql查询今年的12个月的统计数据
1.查出1~12 SELECT @xi:=@xi+1 as id from (SELECT 1 UNION SELECT 2 UNION SELECT 3) xc1, (SELECT 1 UNION ...
- MYSQL查询一年中12个月的数据,补全12个月.
1.建立12个月的视图 CREATE VIEW 12_month_view AS SELECT 01 AS month UNION SELECT 02 AS month UNION SELECT 03 ...
- MySQL查询统计今年12个月的数据,没有默认为空
此处先省略二百字的废话 做报表统计的时候,常常需要在MySQL端用sql统计近12个月的数据,或者近30天的数据. 假如遇到当月没有数据,或者当天没有数据时,默认为0. SELECTCASE WHEN ...
- MySQL获取近12个月数据SQL
##获取近12个月数据 SELECT TYEAR,TMONTH,CONCAT(SUBSTRING(TYEAR,3),'/',TMONTH) AS T_TIME,MARKETNAME,SJJY_WGDL ...
- oracle查询上个月数据(次月某日查询上月数据)
查询今天数据: SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,'YYYY-MM-DD')=TO_CHAR(SYSDATE,'YYYY ...
- mysql查询补齐12个月_MySQL查询12个月数据,无数据补0
1.数据库 和表就用自己的,下面是代码 select case month(shi_com_time) when '1' then sum(mileage) else 0 end as 一月份, c ...
最新文章
- 操作系统学习:Linux0.12初始化详细流程-进程退出与系统进入怠速
- 学科顶尖!这些高校,“双一流”潜力股!
- 腾讯地图api将物理地址转化成坐标
- 如何在Kaggle 首战中进入前 10%
- 数据加载中gif_淮师大GIF加载中......
- oracle并行和并发,Oracle 并发查询
- 群体智能优化算法之烟花算法(Fireworks Algorithm,FWA)
- 硬件设计40之什么是I2S、PCM、MP3?
- Windows10 添加打印机
- ValueError: Input 0 of node ... was passed float from ... incompatible with expected float_ref.
- 错误:.TemplateProcessingException: Exception evaluating SpringEL expression:
- 汇报:阳光事业在阳光下进行
- 软件工程课程第二次任务——需求分析与原型设计
- 如何实现学生评语的导入
- java SQL常用语句总结大全(超详细)
- 2023阿里云账号注册流程(多种注册方法随便选)
- 初中计算机科学生情况,初中计算机科学与技术的现代化运用探究
- 为什么网页无法正常显示
- Python中随机数的生成
- 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )
热门文章
- Unity在OpenGL模式下Shader编译报错
- Could not find messages which '/home/flying/catkin_ws/src/beginner_tutorials/msg/Num.msg' depends
- 时间序列分析中的ARMA,ARIMA,ARC…
- 如何查看是否有清华源/删除清华源,保留默认源
- H5/C3实践(2) --3D导航栏旋转木马
- PAT5-06. 航空公司VIP客户查询
- 虚拟机RedHatEenterpriseLinux5安装及Oracle10.2.0安装手记收藏
- 基于oracle查询锁表和解锁的处理方法
- python 配置文件一般用什么格式_配置文件格式,哪个最强?
- 极客公园创新大会十周年首日看点:前沿思考论坛