SELECT t20.OPERATOR_ID,t20.OPERATOR_CODE,t20.OPERATOR_NAME,t20.deptname,
CAST(max(case WHEN t20._day_of_week=1 then t20.in_time else null end) AS CHAR) in_time1,
CAST(max(case WHEN t20._day_of_week=1 then t20.out_time else null end) AS CHAR) out_time1,
CAST(max(case WHEN t20._day_of_week=2 then t20.in_time else null end) AS CHAR) in_time2,
CAST(max(case WHEN t20._day_of_week=2 then t20.out_time else null end) AS CHAR) out_time2,
CAST(max(case WHEN t20._day_of_week=3 then t20.in_time else null end) AS CHAR) in_time3,
CAST(max(case WHEN t20._day_of_week=3 then t20.out_time else null end) AS CHAR) out_time3,
CAST(max(case WHEN t20._day_of_week=4 then t20.in_time else null end) AS CHAR) in_time4,
CAST(max(case WHEN t20._day_of_week=4 then t20.out_time else null end) AS CHAR) out_time4,
CAST(max(case WHEN t20._day_of_week=5 then t20.in_time else null end) AS CHAR) in_time5,
CAST(max(case WHEN t20._day_of_week=5 then t20.out_time else null end) AS CHAR) out_time5,
CAST(max(case WHEN t20._day_of_week=6 then t20.in_time else null end) AS CHAR) in_time6,
CAST(max(case WHEN t20._day_of_week=6 then t20.out_time else null end) AS CHAR) out_time6,
CAST(max(case WHEN t20._day_of_week=7 then t20.in_time else null end) AS CHAR) in_time7,
CAST(max(case WHEN t20._day_of_week=7 then t20.out_time else null end) AS CHAR) out_time7
from (
SELECT t8.OPERATOR_ID,t8.OPERATOR_CODE,t8.OPERATOR_NAME,t9.deptname,t8._date,
CASE WHEN DAYOFWEEK(t8._date)= 1 THEN 7 ELSE DAYOFWEEK(t8._date)- 1 END _day_of_week,
IFNULL(IFNULL(IFNULL(t8.jb_in_time,t8.qj_in_time),t7.in_time),t10.in_time) in_time,
IFNULL(IFNULL(IFNULL(t8.jb_out_time,t8.qj_out_time),t7.out_time),t10.out_time) out_time
from (
SELECT t1.OPERATOR_ID,t1.OPERATOR_CODE,t1.OPERATOR_NAME,t1.deptid,date(t0._date) _date,
-- 上午请假调休
(
SELECT IF(count(*)=0,null,t5.leavetype)
FROM t_leave_record t5
WHERE IF(t5.starttime < DATE(t0._date),DATE(t0._date),t5.starttime ) <= DATE_ADD(DATE(t0._date),INTERVAL 12 HOUR)
and DATE(t0._date) BETWEEN DATE(t5.starttime ) and DATE(t5.endtime)
and t5.operatorid=t1.OPERATOR_ID
and t5.checkstatus = '4'
) qj_in_time,
-- 下午请假调休
(
SELECT IF(count(*)=0,null,t5.leavetype)
FROM t_leave_record t5
WHERE IF(t5.starttime < DATE(t0._date),DATE_ADD(DATE(t0._date),INTERVAL 13 HOUR),t5.starttime ) >= DATE_ADD(DATE(t0._date),INTERVAL 13 HOUR)
and DATE(t0._date) BETWEEN DATE(t5.starttime ) and DATE(t5.endtime)
and t5.operatorid=t1.OPERATOR_ID
and t5.checkstatus = '4'
) qj_out_time,
-- 上午加班
(
SELECT IF(count(*)=0,null,'加班')
FROM t_work_record t5
WHERE IF(t5.starttime < DATE(t0._date),DATE(t0._date),t5.starttime ) <= DATE_ADD(DATE(t0._date),INTERVAL 12 HOUR)
and DATE(t0._date) BETWEEN DATE(t5.starttime ) and DATE(t5.endtime)
and t5.operatorid=t1.OPERATOR_ID
and t5.checkstatus = '4'
) jb_in_time,
-- 下午加班--
(
SELECT IF(count(*)=0,null,'加班')
FROM t_work_record t5
WHERE IF(t5.starttime < DATE(t0._date),DATE_ADD(DATE(t0._date),INTERVAL 13 HOUR),t5.starttime ) >= DATE_ADD(DATE(t0._date),INTERVAL 13 HOUR)
and DATE(t0._date) BETWEEN DATE(t5.starttime ) and DATE(t5.endtime)
and t5.operatorid=t1.OPERATOR_ID
and t5.checkstatus = '4'
) jb_out_time
FROM
(
SELECT :date _date
UNION ALL
SELECT DATE_ADD(:date,INTERVAL 1 DAY)
UNION ALL
SELECT DATE_ADD(:date,INTERVAL 2 DAY)
UNION ALL
SELECT DATE_ADD(:date,INTERVAL 3 DAY)
UNION ALL
SELECT DATE_ADD(:date,INTERVAL 4 DAY)
UNION ALL
SELECT DATE_ADD(:date,INTERVAL 5 DAY)
UNION ALL
SELECT DATE_ADD(:date,INTERVAL 6 DAY)
) t0,t_operator t1
ORDER BY t1.OPERATOR_ID,t0._date
) t8
LEFT JOIN(
-- 打卡记录
SELECT
t2.operator_code,
DATE(t2.dates) _date,
t2.in_time,
t2.out_time
FROM
t_calendar t2
)t7 on t8.operator_code=t7.operator_code and t8._date=t7._date
-- 补签记录
LEFT JOIN(
SELECT t3.operatorid, date(t3.filldate) _date,
CASE WHEN t3.filltype = 1 THEN CONCAT('补签时间:',t3.updatedtime) ELSE NULL END in_time,
CASE WHEN t3.filltype = 2 THEN CONCAT('补签时间:',t3.updatedtime) ELSE NULL END out_time
FROM t_fill_calendar t3
GROUP BY t3.operatorid,date(t3.filldate)
) t10 on t8.operator_id=t10.operatorid and t8._date=t10._date
LEFT JOIN t_dept t9 on t8.deptid=t9.id
where t8.deptid in(:deptIds)
) t20
GROUP BY t20.OPERATOR_ID,t20.OPERATOR_CODE,t20.OPERATOR_NAME,t20.deptname
分享到:
相关推荐
##通过sqlcmd执行sql文件 由于sql文件过大,超过了100M,再数据库的窗口执行,结果超出内存了,对于特别大的sql文件可以使用sqlcmd进行执行 ###1.打开cmd窗口 运行–cmd–进入到sql文件所在的文件夹。 如果是win7可...
sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql...
在我个人编写SQL脚本时,至少会把SQL的格式排列成易于阅读的,因为其他人会阅读到你的SQL,无论是在程序中或是脚本文件中,良好的排版不仅让人看起来赏心悦目,在和他人之间做交流时也省时省力,不会因为揉成一团的...
SQLPrompt for SQLServer2016 智能提示插件 SQL2016 提示 SQLPrompt最新版本 绿色版 SQL Prompt 是一款拥有SQL智能提示功能的SQL Server和VS插件。SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动...
SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between ...
SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同...
SQL的过程中对调用者传进的SQL进行转换后再执行,就基本完成了整个系统的SQL语法从SQL Server到Oracle的 兼容,呵呵,听起来有点不可思议。系统已经于3个月前上线,目前运行很稳定。 如果有人用得着或发现什么...
解决 win10系统安装sql2005时报了服务无法启动问题 1、正常安装任一版本的SQL Server 2005(最好安装企业版)。 2、安装到SqlServer服务的时候提示启动服务失败(提示重试的时候),这里就是关键啦,下载本文的两个...
今天将由于需要就将我的SQL 2008升级到SQL 2008 R2. 说到为什么要升级是因为,从另一台机器上备份了一个数据库,到我的机器上还原的时候提示“System.Data.SqlClient.Sqlerror:该数据库是在运行版本10.50.2500的...
它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。...
sql 语句学习 sql sql sqlsql 语句学习 sql sql sql
SQL语句基础教程 SQL(Structured Query Language)是一种特殊目的语言,用于管理关系数据库管理系统(RDBMS)。SQL语句基础教程旨在帮助新手和需要复习SQL的资料仓储业界老将,学习SQL基础知识和语法。 SQL指令 -...
非常详细. 00.sybase中文安装指南FOR WIN 01.SQL Anywhere 10简介 02SQL Anywhere 10更改和升级 03SQL Anywhere 服务器数据库管理 04SQL Anywhere 服务器SQL 用法 05SQL Anywhere 服务器SQL 参考...
最近折腾SQL Server的localdb,微软自带的管理工具很庞大,安装复杂。发现Toad的很好用SQL Server数据库管理工具,特意制作成单文件,不用安装,直接管理。已经注册好了,可以直接使用。win7、8(64位)测试可行。 ...
除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql...
Microsoft SQL Server 2008 Native Client (SQL Server Native Client) 是单一动态链接库 (DLL),其中包含 SQL OLE DB 提供者和 SQL ODBC 驱动程序。此链接库针对使用机器码 API (ODBC、OLE DB 和 ADO) 的应用程序...
• Sqljdbc41.jar 需要 JRE 7 并支持 JDBC 4.1 API • Sqljdbc42.jar 需要 JRE 8 并支持 JDBC 4.2 API 受支持的 SQL Server 版本: • Microsoft SQL Server 2016 • Microsoft SQL Server 2014 • Microsoft ...
oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是sql性能问题。本书是作者十年磨一剑的成果之一,深入分析与解剖oracle sql优化与调优技术,主要内容包括: 第一篇“执行计划...
介绍就不多说了,下边是部分目录,觉得有用的话就顶一个 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整...
SQL Server绿色版是SQL Server 2000绿色精简版,SQL Server绿色版只保留 GSQL.EXE 版权,其他附带文件版权归美国微软公司所有,本软件以技术研究为宗旨,请在下载本软件后24小时内删除附带的 SQL Server 文件或替换...