目前有1张打卡记录表,1张排班表,效果要打卡记录根据排班表每人每日排班上下班时间自动获取结果打卡记录是属于那是区间的!效果图
目前问题点:1.视图写法把区间时间写死,没法根据排班信息进行打卡数据分类
求打卡记录表根据排班信息进行打卡数据分类的视图写法,或其它思路可以达到该效果
A.打卡记录表结构
B.排班信息表结构
可以关联字段是员工ID 日期

C.目前视图写法如下:
SELECT
REPLACE(LTRIM(DATEDIFF(DAY,‘1899-12-30’, T.刷卡日期))+’.0’+ LTRIM(T4.BADGENUMBER),’ ‘,’’) AS [考勤识别码],
T.USERID AS [员工考勤机上ID],
T4.BADGENUMBER AS [考勤号码],
T.刷卡日期,
ISNULL(T1.白班上午上班, ‘’) AS [白班上午上班],
ISNULL(T6.白班上午下班, ‘’) AS [白班上午下班],
ISNULL(T7.白班下午上班, ‘’) AS [白班下午上班],
ISNULL(T2.白班下午下班, ‘’) AS [白班下午下班],
ISNULL(T3.白班晚上上班, ‘’) AS [白班晚上上班],
ISNULL(T5.白班晚上下班, ‘’) AS [白班晚上下班],
ISNULL(T10.夜班上午上班, ‘’) AS [夜班上午上班],
ISNULL(T11.夜班上午下班, ‘’) AS [夜班上午下班],
ISNULL(T8.夜班晚上上班, ‘’) AS [夜班晚上上班],
ISNULL(T9.夜班晚上下班, ‘’) AS [夜班晚上下班]

FROM
(SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期
FROM dbo.CHECKINOUT
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MIN(CONVERT(TIME, CHECKTIME, 114)) AS 白班上午上班
FROM dbo.CHECKINOUT AS CHECKINOUT_3
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) < ‘09:00:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T1 ON T1.USERID= T.USERID AND T1.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 白班上午下班
FROM dbo.CHECKINOUT AS CHECKINOUT_3
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘09:00:00’) AND (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) < ‘12:45:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T6 ON T6.USERID= T.USERID AND T6.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 白班下午上班
FROM dbo.CHECKINOUT AS CHECKINOUT_3
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘12:45:00’) AND (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) < ‘14:30:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T7 ON T7.USERID= T.USERID AND T7.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 白班下午下班
FROM dbo.CHECKINOUT AS CHECKINOUT_2
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘14:30:00’) AND (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) < ‘18:30:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T2 ON T2.USERID= T.USERID AND T2.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 白班晚上上班
FROM dbo.CHECKINOUT AS CHECKINOUT_1
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘18:30:00’) AND (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) < ‘18:30:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T3 ON T3.USERID= T.USERID AND T3.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 白班晚上下班
FROM dbo.CHECKINOUT AS CHECKINOUT_1
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘18:30:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T5 ON T5.USERID= T.USERID AND T5.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 夜班晚上上班
FROM dbo.CHECKINOUT AS CHECKINOUT_1
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘16:45:00’) AND (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) < ‘21:00:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T8 ON T8.USERID= T.USERID AND T8.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 夜班晚上下班
FROM dbo.CHECKINOUT AS CHECKINOUT_1
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘21:00:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T9 ON T9.USERID= T.USERID AND T9.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 夜班上午上班
FROM dbo.CHECKINOUT AS CHECKINOUT_1
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘00:00:01’) AND (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) < ‘02:00:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T10 ON T10.USERID= T.USERID AND T10.刷卡日期= T.刷卡日期
LEFT OUTER JOIN (SELECT USERID, CONVERT(varchar(10), CHECKTIME, 120) AS 刷卡日期, MAX(CONVERT(TIME, CHECKTIME, 14)) AS 夜班上午下班
FROM dbo.CHECKINOUT AS CHECKINOUT_1
WHERE (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) >= ‘02:00:00’) AND (CAST(CONVERT(varchar(8), CHECKTIME, 14) AS time) < ‘10:00:00’)
GROUP BY USERID, CONVERT(varchar(10), CHECKTIME, 120)) AS T11 ON T11.USERID= T.USERID AND T11.刷卡日期= T.刷卡日期
LEFT OUTER JOIN dbo.USERINFO AS T4 ON T4.USERID = T.USERID
WHERE
T4.BADGENUMBER IS NOT NULL

打卡记录根据排班表每人每日排班上下班时间自动获取结果打卡记录是属于那是区间相关推荐

  1. 0 基础学脚本:给同事做一个排班表并每日通知「02」

    Hello 小伙伴们早上.中午.下午.晚上.深夜好! 我是爱折腾的 jsliang~ 本系列文章和配套直播视频,面向金山文档的「轻维表」「表单」用户. 希望通过[自动化]和[脚本]等能力,让里面数据相 ...

  2. php mysql 排班表_PHP倒班五班三倒

    问题 : 甲乙丙丁戊五个人,一日三班(早中晚),全年轮值,做排班表 (不考虑节假日) 想法:  排班记录存数据库,或者本地缓存,方便以后查询, 代码如下: function cal_days_in_y ...

  3. 【办公类-16-01-01】“机动班下午代班的排班表”(python 排班表系列)

    最终效果图: 含有(周次.日期月日去0.星期.班级.园区.姓名.备注) 20220927第一次代码 背景需求: 本学期我的岗位调整为机动岗(不担任固定班级的班主任),上午承担各种各条线的辅助工作(信息 ...

  4. 【办公类-16-06】“2022下学期 总园活动室(沙水+建构)排班表”(python 排班表系列)

    背景需求: 最近保教主任一直在为总园的活动室安排而头疼不已,和组长们商议许久,依旧无法合理把活动室安排好.3月2日下午,听主任和游戏室成员聊了一个小时的排班,结论是除沙水和建构外,其余空余时间都是&q ...

  5. 这样做excel排班表,省时又省力,附加模板~

    如何做好一个排班表? 一个完整的 Excel 排班表应该包含以下内容: 员工信息:包括员工姓名.员工编号.职位等基本信息. 日期和时间:排班表应该有一个日期和时间的列,用于记录每天的排班情况. 班次/ ...

  6. excel自动排班表怎么做?哪里有免费的自动排班表?2022最新整理30份Excel自动排班表,建议收藏

    你还在手动排班吗?别再这样做了,我有更高效的方法! 在工作中,我们经常需要进行排班,不管是假期值班,还是直播排班,都需要做一个排班表.以前的时候排班都是手动调的,你周一我周二,但这种做法效率比较低,而 ...

  7. 【办公类-16-03】“大班运动场地分配表2-斜线排列、5天循环、不跳节日”(python 排班表系列)

    样例展示:不跳过节日+每周场地斜角排列场地循环排序表(8个班级8组内容) 背景需求: 给大班排完后,我又试着给中班组做批量,中班组长说已经请一位组员用人工排aEXCL表. 中班各班起始场地如下: 于是 ...

  8. 护士排班问题matlab,护士排班,该听谁的?聪明的护士长都这样做!

    原标题:护士排班,该听谁的?聪明的护士长都这样做! 作者 | 纳洛酮 来源 | 护理界原创 护士排班,多听听护士的心声! 话题 某基层医院,抗疫期间,又值春节,所以科里的护士排班都是上的24h大班,即 ...

  9. php日历排班表,日历排班表软件下载

    日历排班表软件app是一款掌上智能排版助手.日历排班表软件app主要为有倒班.值班需求的工作人员提供智能排班功能,您可以通过日历排班表软件app输入对应的数据,就可以精准算出自己的上班.值班时间,非常 ...

最新文章

  1. 到成都去是联想的必然选择
  2. The J2EE Architect's Handbook讀書筆記(二)
  3. sklearn的train_test_split,果然很好用啊!
  4. 把 textbox 遍历赋值为空
  5. EF Core的一个紧急bug,我这样修改
  6. 英伟达发布dpu,或取代cpu,宣称一个能顶125个
  7. TYVJ1613 不和谐的公司
  8. 浅谈工业4.0时代,深信服adesk桌面云如何助力智能工厂.
  9. linux下画pcb的软件,Linux下画原理图和PCB
  10. 计算机机房配电计算,银行计算机房动力配电系统浅析
  11. 转专业后的迷茫和开始——自学C语言之旅
  12. 2020年中国共享电单车市场现状与格局分析,青桔、哈啰和美团占据市场主要份额「图」
  13. eclipse打开中文文件乱码问题
  14. BF2地图下载 战地系列非官方单机地图集
  15. 小学四年级计算机制作月历教案,冀教版信息技术四上第1课《制作月历》教案1.doc...
  16. SPI Flash芯片W25Q32英文版数据手册解读(二)---------存储器知识,寄存器
  17. 【DDOS 防御小建议】
  18. 【数论】关于质数的几个定理,用 latex 来表示数学公式
  19. pip安装命令大全(持续更新)
  20. Win10 扩展显示器后窗口不显示问题

热门文章

  1. Intel oneAPI Base Toolkit 安装教程(Linux)
  2. 用java计算小数的双阶乘
  3. Pandas---条件筛选与组合筛选
  4. excel中联系人转换为csv导入手机出现乱码的解决方法
  5. iOS App 转移 图文详解
  6. 【死磕opensips】sip协议解析
  7. PoisonGAN: Generative Poisoning Attacks Against Federated Learning in Edge Computing Systems 阅读报告
  8. 阿里云弹性伸缩服务入门介绍
  9. 街舞中的rolling机器人_这,就是街舞中的那些“Swag”十足的舞蹈类型,你了解吗?...
  10. java 获取file后缀,Java获取文件后缀的方法