求一语句,和工作日相关的

onlytiancai 2006-11-28 09:02:01

大碗豆浆 20:47:05
有这样一个表。记录的内容是这样的。

每天员工在这个表里插数据。可能一天插多条,也可能一条也不插。基本的要求是周一到周五必须添加数据。我现在想要一个查询语句。可以查过去三周内谁没有填。不需要知道是那天没有填。只要知道过去的三周的工作日里有没有没填的。只要有一个工作日没填就必须提取出来。
大碗豆浆 20:47:09
表的结构是这样的

tcid ID号
tcemp 员工ID号
tcdate添加日期
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
李必胜 2006-11-29
  • 打赏
  • 举报
回复
为什么要排除周六周日?
qingqing_kiss 2006-11-29
  • 打赏
  • 举报
回复
select dateadd(day, -21, dateadd(day,-(datepart(dw,getdate())-1),getdate()))
onlytiancai 2006-11-29
  • 打赏
  • 举报
回复
你排除周六周日了吗?
marco08 2006-11-29
  • 打赏
  • 举报
回复

select * from tablename
where tcemp not in(select distinct tcemp from tablename where tcdate between dateadd(week, -3, getdate()) and getdate())
onlytiancai 2006-11-29
  • 打赏
  • 举报
回复
本周当然不算了呀。
dawugui 2006-11-28
  • 打赏
  • 举报
回复
过去三周内?

本周算不算?

具体时间到底是多少?
onlytiancai 2006-11-28
  • 打赏
  • 举报
回复
不管周末。只要工作日有一天没填,就算是不合格。
排除周末的方法.
declare @date datetime
set @date='2006-07-18' --给定的日期

if (select datepart(dw,dateadd(dd,1,@date)))=7
set @date=(select dateadd(dd,3,@date))
else if (select datepart(dw,dateadd(dd,1,@date)))=1
set @date=(select dateadd(dd,2,@date))
else
set @date=(select dateadd(dd,1,@date))
select @date


你再给考虑一下哦
onlytiancai 2006-11-28
  • 打赏
  • 举报
回复
晕,你直接减去21,是前三周吗?比如今天周二了,前数21天,可能会少一天吧,还有工作日没有加上呀,如果有人周一到周五没数据,周六有数据,你也给误报了,这不行这,再改改。
onlytiancai 2006-11-28
  • 打赏
  • 举报
回复
我就说嘛,在SQL版,解决问题的速度是最快的,谢谢楼上的朋友,我让死豆浆去试试,早点儿睡吧。
dawugui 2006-11-28
  • 打赏
  • 举报
回复
假设员工表A(tcemp 员工ID号,name 员工姓名)
数据表(tcid ID号,tcemp 员工ID号,tcdate添加日期)

select tcemp , name from A where tecmp not in
(select distinct tcemp from 数据表 where tcdate between dateadd(day,-21,getdate()) and getdate())

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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