基本需求如下:
假设员工人数1000人,只上白班,一个星期上6天,星期天休息,一天需要打3次卡,分别是07:00-08:00,12:00-13:00,17:00-18:00。考勤机中考勤的原始记录,我已经读取出来,现在问题是如何某人在某月中每天(除星期天)的某段时间(如07:00-08:00)没有打开记录,我怎样得到这个人没打卡记录的数据呢?
个人想法是先按人员的编号进行循环,再按日期进行循环,看指定时间段内是否有数据,但是如何按时间来循环的代码我不会写,请高手指点,我们查询的时间区间是以月为基准的。
假设员工人数1000人,只上白班,一个星期上6天,星期天休息,一天需要打3次卡,分别是07:00-08:00,12:00-13:00,17:00-18:00。考勤机中考勤的原始记录,我已经读取出来,现在问题是如何某人在某月中每天(除星期天)的某段时间(如07:00-08:00)没有打开记录,我怎样得到这个人没打卡记录的数据呢?
个人想法是先按人员的编号进行循环,再按日期进行循环,看指定时间段内是否有数据,但是如何按时间来循环的代码我不会写,请高手指点,我们查询的时间区间是以月为基准的。
解决方案 »
- TabControl、ImageList图片失真。(已搞定,随便进来一个人接分。)
- kindeditor编辑器上传图片功能想改成 C#版本的 ?哪位兄台做过吗?
- 选项卡文字问题
- C#操作Excelj,mg
- System.Diagnostics.Process.Start如何让打开的窗口没有菜单和状态栏?
- 关于多表更新事务处理,急!
- 如把把输入保存到text文件里
- 谁能帮我把下面的这句话翻译一下:VB.Net 到C#.Net,谢谢!回复有分!
- 如何在水晶报表打印时用程序设置自定义的纸张大小?
- 一个很菜的问题:vs.Net中如何将DateTimePicker控件的值设为空白?
- VS2008 出问题了,是不是光标还是编译器出问题!
- 无法获取父窗体,一直显示异常:未将对象引用设置到对象的实例。
sql语句解决问题
(select 编号 from 考勤表 where ...时间段1...)
union select ...
2.使用group by对员工的每天打卡进行分组~使用having得到打卡记录小于3的员工~
and employeeinf.t_num not in(select t_num from note
where convert(char(7),t_notetime,120)='2008-12'
and convert(char(5),t_notetime,108) between '07:00' and '08:00')
我按5楼的意见写了这条查询语句,但是提示t_num不明确??
6楼的意见能不能说得再详细点,最好写个例子给我看一下,谢谢!
考勤表(员工编号,打卡时间)select *
from 员工表
where 员工编号
not in (select 员工编号 from 考勤表 where 打卡时间>='2009-01-20 07:00:00' AND 打卡时间<='2009-01-20 08:00:00')
(
select min(t_notetime) as t_notetime,[人员ID] from noteinf where convert(char(10),cdate,120)='2009-01-21'
and convert(char(5),t_notetime,108) between '07:00' and '08:00'
group by [人员ID]
union
select min(t_notetime) as t_notetime,[人员ID] from noteinf where convert(char(10),cdate,120)='2009-01-21'
and convert(char(5),t_notetime,108) between '12:00' and '13:00'
group by [人员ID]
union
select min(t_notetime) as t_notetime,[人员ID] from noteinf where convert(char(10),cdate,120)='2009-01-21'
and convert(char(5),t_notetime,108) between '17:00' and '18:00'
group by [人员ID]
)as kq
right join member on [人员ID]=member.[id]
group by member.[id],convert(char(10),t_notetime,120)
having count(convert(char(10),t_notetime,120))<3