最近一直在用mysql数据库做云项目,有段时间没有接触oracle了,昨天有朋友叫我帮忙用oracle处理一个考勤记录的需求,我在考虑如何尽量精简实现上面花了一些时间。于是把这个实现做个总结。

需求如下:

  1. rownum为奇数的为进厂时间,偶数的为离场时间
  2. 第一个奇数行的时间被第一个偶数行相减,以此类推
  3. 将上面两步产生的时间结果集相加得出总时间作为当天考勤时间

最终能和别的表联合起来形成这样的展示:

人员

日期

工时

入厂时间

出厂时间

张三

2015/6/18

9小时30分钟

8:00:00

10:30:00

11:00:00

12:30:00

13:30:00

17:30:00

18:00:00

18:30:00

19:00:00

19:30:00

20:00:00

20:30:00

李四

..

..

要我实现的是如何把时间一列的数据拆分成为两列来显示:

原来一列是这样的:

要实现的拆分的效果是这样的:

实现方式如下:

首先创建一个时间表(当然这里我关注的只是scan_time这个字段,其他字段不用理会):

create table CMIS_PERSON_FI_DETAIL_TB
(detail_id    NUMBER(20) not null,scan_time    DATE,person_fk_id NUMBER(20) not null
)

其次,插入数据,插入数据之后的效果是这样的:

最后编写sql进行实现,实现的sql语句如下所示:

select max(a) in_time, max(b) out_timefrom (select decode(mod(rownum, 2), 1, scan_time) a,decode(mod(rownum, 2), 0, scan_time) b,round(rownum / 2) cfrom CMIS_PERSON_FI_DETAIL_TB)group by corder by c;

运行sql,得到了想要的效果,如下所示:

转载于:https://www.cnblogs.com/longshiyVip/p/4590956.html

oracle处理考勤时间,拆分考勤时间段的sql语句相关推荐

  1. oracle sq语句查询时间,Oracle实现查询时间段的Sql语句两法

    Oracle实现查询时间段的Sql语句两法,相比ORacle要查询时间段的Sql语句还是与Sql Server的Sql语句有区别的,下面举两种方法来说明在ORacle是如何查询时间段的: 第一种方法: ...

  2. 统计每天某一时间段的SQL语句

    求一个统计每天某一时间段的SQL语句 我的表结构  id     cardid                 name           zhiwu         time  1       2 ...

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

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

  4. oracle添加表的索引,oracle批量添加指定表前缀的索引SQL语句

    oracle批量添加指定表前缀的索引SQL语句 需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 ##需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 declare --用户名 ...

  5. mysql 日期减10分钟_获取当前时间减去10分钟的话SQL语句怎么写

    获取当前时间减去10分钟的话SQL语句怎么写 Mysql日期和时间函数不求人 本文出自:http://linuxdb.yeah.net 作者: 晏子 (2001-07-05 15:00:00) 对于每 ...

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

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

  7. oracle取本月最后一天是星期几_oracle SQL语句取本周本月本年的数据

    --国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 select ...

  8. Oracle行转列、列转行的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现 ? 1 2 3 select concat(id,username) str from app_user select id||usern ...

  9. 【oracle】查看数据库最近执行了哪些sql语句

    前言 oracle 12.1.0.2.0 为了确定功能是否生效,需要查看数据库最近执行的sql语句,在里面找到想要的SQL语句 查看数据库最近执行了哪些sql语句 # 查看1小时内执行的sql语句,并 ...

最新文章

  1. Collections.addAll() 的使用 以及和list.addAll() 的区别
  2. .Net使用Redis详解之ServiceStack.Redis(七)
  3. [转]一步步搭建Ubuntu环境——dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题——安装Flashplayer出错 ------不错...
  4. centos 6.5 安装redis
  5. springcloud工作笔记107---Springboot中MyBatis 自动转换 map-underscore-to-camel-case=true 开启驼峰命名映射
  6. goto php 源码,GoToPHP
  7. 我们说的目标导向不是 “唯结果论”
  8. 三维重建——相机几何参数标定
  9. 2021-09-23
  10. CSV 导入SQL Server(bulk insert方式)
  11. 文章刚刚开源就被培训机构“BP”了,过于不要脸
  12. java面试自我介绍
  13. struct template 函数 特化
  14. 嗖嗖移动营业大厅(Java面向对象编程)
  15. [Filco]蓝牙连接键盘
  16. 18.8.17 考试总结
  17. 使用易路代理yiluproxy时,出现不是自己选定的城市该怎么办?
  18. k8s使用volume将ConfigMap作为文件或目录直接挂载_【大强哥-k8s从入门到放弃06】Secret详解...
  19. 转: Windows句柄数的限制
  20. PQ4R Smashin Scope

热门文章

  1. php 缩略图 等比例 不失真,PHP自适应宽高度等比例缩略图函数 (无裁切)
  2. python入门知识大全_python基础知识有哪些
  3. Git rebase 和 Git merge 的区别,你知道吗?
  4. python数据可视化源码_Python数据分析:基于Plotly的动态可视化绘图 随书源码[101MB]...
  5. 如何用HTML语言设计进度条,html5代码如何实现进度条功能?(示例)
  6. fread、fwrite、fopen函数的简单使用和open、read、write区别解析
  7. 极端原理_为极端而设计
  8. 计算机视觉笔记本推荐_视觉灵感:Mishti笔记本
  9. Android工程师转型Java后端开发之路,自己选的路,跪着也要走下去!
  10. 致毕业生:那些年我们错过的“BAT”