时间不连续的一个查询

wuxiaoqqqq 2008-12-09 04:26:35
我现在有三个表,一个是员工表里面存了员工的ID,工种等基本信息,一个是员工的工作时间表,存了每一天员工的工作时间,一个是员工是否为头的表,用EmployeeID和员工表相关联,但里面还有一个生效时间,startDate-endDate.但这个时间不一是连续的,比如可以从2008-1-1---2008-2-1
中间一段时间不是然后从2008-3-1---2008-4-1,如果这个员工在生效时间内他就是工头。

表结构大概是这样的

Weekly EmployeeForman Hours

WeeklyID EmployeeID HoursID

EmployeeID StartDate WeeklyID

Name EndDate WorkDate


我现在要统记这个员工为工头的时候的工作时间和不为工头的工作时间,什么方法最快?

我现在的做法是先把在EmployeeForman里面有记录的Employee的WorkDate全加起来放到一个临时表里面,然后再把所有的时间全都加起来,搜到如果在EmployeeForman里面有记录的就减掉得到不是工头的信息,但这样的后果就是数据一多就会很慢。
...全文
147 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
论文MVP网 2008-12-10
  • 打赏
  • 举报
回复
帮顶下 我也不了解啊
ws_hgo 2008-12-09
  • 打赏
  • 举报
回复
关注
xiaoliaoyun 2008-12-09
  • 打赏
  • 举报
回复

SELECT EmployeeID
,SUM(CASE WHEN IsHeadTime = 'HeadTime' THEN WorkHour END) AS Total_HeadTime
,SUM(CASE WHEN IsHeadTime = 'NOT HeadTime' THEN WorkHour END) AS Total_NOT_HeadTime
FROM (
SELECT A.EmployeeID
,B.WorkDate
,B.WorkHour
,CASE WHEN C.EmployeeID IS NOT NULL THEN 'HeadTime' ELSE 'NOT HeadTime' END AS IsHeadTime
FROM (Weekly A
INNER JOIN Hours B ON A.WeeklyID = B.WeeklyID)
LEFT JOIN EmployeeForman C ON B.WorkDate BETWEEN C.StartDate AND EndDate AND C.EmployeeID = A.EmployeeID
)X
GROUP BY EmployeeID
快乐_石头 2008-12-09
  • 打赏
  • 举报
回复
結購+數據+結果~~
百年树人 2008-12-09
  • 打赏
  • 举报
回复
三个表都搞点数据出来,再说说你要的结果
wuxiaoqqqq 2008-12-09
  • 打赏
  • 举报
回复
Hours里面还有个字段是WorkHour存的每天的时间
Hours和Weekly之间通过WeeklyID 相连,EmployeeForman 和Weekly通过EmployeeID相连
wuxiaoqqqq 2008-12-09
  • 打赏
  • 举报
回复
现在EmployeeForman里面有这样几条记录

Employee StartDate EndDate
2011 2006-01-01 2006-02-01
2011 2006-02-02 2006-03-01
2011 2007-04-25 2008-12-09

然后Hours里面存的是这个从2006-1-1到2008-12-9每天的工作时间。
我要统计他是工头的工作时间和不是工头的工作时间。
rucypli 2008-12-09
  • 打赏
  • 举报
回复
2008-1-1---2008-2-1


取出他们之间每一天和工作时间inner join
fcuandy 2008-12-09
  • 打赏
  • 举报
回复
看不懂
wuxiaoqqqq 2008-12-09
  • 打赏
  • 举报
回复
如果没有看明白的请说一下什么地方没看明白。我好补充说明一下。
dawugui 2008-12-09
  • 打赏
  • 举报
回复
乱,帮顶.
hyde100 2008-12-09
  • 打赏
  • 举报
回复
关注

27,579

社区成员

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

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