请教请假天数差怎么写

ajdkjalj 2017-11-07 03:39:34
DECLARE @t TABLE (id INT PRIMARY KEY, Name NVARCHAR(20),BegTime datetime,EndTime datetime)
INSERT INTO @t VALUES (1,'王五','2017-11-06 08:00','2017-11-06 18:00')
INSERT INTO @t VALUES (2,'王二','2017-11-07 08:00','2017-11-07 18:00')
INSERT INTO @t VALUES (3,'王二','2017-11-08 08:00','2017-11-09 12:00')
INSERT INTO @t VALUES (4,'王五','2017-11-07 14:00','2017-11-08 18:00')

数据如上,要做个统计请假天数的功能,如果有12点前或12点后就算半天,我想得到的结果是
编号 姓名 天数
1 王五 2.5
2 王二 2.5
...全文
334 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2017-11-07
  • 打赏
  • 举报
回复
你这个问题存在很多纰漏,比如说请假存在跨周末的吗?当然现实中肯定存在的,如果跨周末,那么周六算是请假还是正常休息呢,有的公司周六是要上班的嘛,有什么大小周的。就算周六日不算在请假的时间里吧,还有比如请假的时间段要跨周末,那么是分开两次或者多次还是就写一次,比如说从今天开始请假到下个礼拜三,是一笔记录还是两笔记录(今天到周五,下周一到下周三)。最好把这些说的清清楚楚明明白白,也方便一次搞定你的需求
吉普赛的歌 2017-11-07
  • 打赏
  • 举报
回复
不知道你是弄着玩还是真需求? 如果是真需求, 每个人请假时都应该明明白地把自己请假的小时数写清楚,然后交由上级主管去审批, 主管审批过了的才算正式请假。 到时候只需要统计请假小时数就行了, 不需要这样搞来搞去。
顺势而为1 2017-11-07
  • 打赏
  • 举报
回复


DECLARE @t TABLE (id INT PRIMARY KEY, Name NVARCHAR(20),BegTime datetime,EndTime datetime)
INSERT INTO @t VALUES (1,'王五','2017-11-06 08:00','2017-11-06 18:00')
INSERT INTO @t VALUES (2,'王二','2017-11-07 08:00','2017-11-07 18:00')
INSERT INTO @t VALUES (3,'王二','2017-11-08 08:00','2017-11-09 12:00')
INSERT INTO @t VALUES (4,'王五','2017-11-07 14:00','2017-11-08 18:00')


Select name,sum(days) as Days
From (Select id,name,
       case when datepart(hour,begtime)>12 or datepart(hour,endtime)<18 
	        then (0.5+datepart(d,endtime)-datepart(d,begtime)) 
			else (1+datepart(d,endtime)-datepart(d,begtime)) end as days 
      From @t) a
Group By name

name                 Days
-------------------- ---------------------------------------
王二                   2.5
王五                   2.5

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧