位置: 编程技术 - 正文
例:公司员工采取三个轮班制度:凌晨0:到早上8:为第一班,早上8:到下午4:为第二班,下午4:到晚上:为第三班。
员工使用电子时钟进行签名,这种电子签名可以自动将记录添加到SQL Server数据库中。但是,有时候,需要增加一个夜班;即使这个轮班发生在第二天,它仍然会被认为是第三班。
你也许希望根据轮班对记录进行分组,但是在你的计划中会有两个非常令人头痛的问题: (1)不是所有的雇员都是按时到达的; (2)有时候员工工作的时间会比他们的一个轮班的时间长一些。
为了能在你的列表中得到正确的分组,你必须假设所有的员工能在一个轮班的开始和结束时间之间的任意时间开始工作。
使用CASE语句是一种解决办法。Listing A中的SQL语句告诉我们,在创建测试表没有错误的情况下,它是如何工作的。
为了使程序代码完全准确的运行,你需要在时间的小窗口中得到每一个轮班的开始时间和下一个轮班的结束时间。在刚才的例子中,你可以用"::."这个值代替@StartTime,然后再重新运行代码。这时候,你必须在每一个轮班结束的分界点上增加毫秒。 解决方案 这个例子假设轮班时间从来没有改变过,但是如果改变了轮班时间该怎么办呢?你必须仿照这个例子并根据改变了的时间写出所有的代码。
一个更好一点的主意就是,针对我们的轮班创建一个表来调用Shifts的开始时间和结束时间。在这个表中,你可以修改Case语句来查找StopTime列。
Listing B中包含了创建Shifts表并向该表中增加记录的代码。代码在一个轮班中设置了时间后,这样使代码看上去既简单又灵活: 我之所以要将轮班记录进行降序排列,是为了避免第三个轮班的边界问题。我将用一些测试案例来论证我的结论,这些内容你可以在Listing C中看到。
实际上,你可以将这个逻辑应用到TemeCards表的记录中去,而不需要创建另外的表,也就不需要在表中增加数据了。我同样使用一个简单的变量来论证我的逻辑。
推荐整理分享教你轻松学会SQL Server记录轮班的技巧(sql初学者视频教程),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:教你轻松学会这款椰香满溢的中式点心,花式开口酥!,怎么学好sql,教你轻松学会这款椰香满溢的中式点心,花式开口酥,怎么学好sql,快速学会sql,教你轻松学会填志愿,教你轻松学会变频空调的维修方法,教你轻松学会填志愿,内容如对您有帮助,希望把文章链接给更多的朋友!
教你轻松恢复/修复SQL Server的MDF文件 首先:如果备份的数据库有两个文件,分别是.LDF和.MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了。或
MsSQL数据导入到Mongo的默认编码问题(正确导入Mongo的方法) 先说下我操作的步骤。1.从sql的managementstudio查询5万条数据,使用右键导出为csv2.由于默认导出没有带列名,手工编辑后增加了列名3.使用mongoimport导入
2分法分页存储过程脚本实例 需要说明的是:这个存储过程参数比较多,我再实际使用中又在外面单独写了一个类,页面调用直接调用封装的类,方法有很多,主要是思路,大家可
标签: sql初学者视频教程
本文链接地址:https://www.jiuchutong.com/biancheng/320356.html 转载请保留说明!友情链接: 武汉网站建设