请问各位,考勤如何计算该卡号是否旷工?
也就是说,当天的考勤记录里没有该卡号的记录,记为旷工,SQL语句该如何写啊?
还要考虑当天是否为假日,该卡号是否出差,是否请假。

解决方案 »

  1.   

    表的大概结构总要说明一下吧,不然SQL从何写起?
      

  2.   

    表很简单!我只简单说明一下表的结构。
    请假表:
    请假类型,起始日期,结束日期出差表:
    出差类型,起始日期,结束日期假日表:
    假日名称,起始日期,结束日期考勤表:
    卡号,上班时间,下班时间,迟到,早退,旷工(float)
      

  3.   

    SQL语句如何写?
    这个可不是一条两条SQL语句能搞定的基本原理就是:设置打卡时间段,如果时间段内没打卡即设置为旷工!但是要考虑无数中特殊情况1、上班打了下班没打,怎么算旷工?这算是最简单的异常
    2、中间请假了(譬如8:00-12:00上班,但是9:00-11:00请假了)有的卡没打
    3、跨段请假、出差(譬如8:00-12:00/14:18:00上班,10:00至次日12:00请假和出差)
    4、......异常很多
      

  4.   

    用sql语句统计这么多情况下的结果不太同意,在程序中按照优先级来计算,得出最终的考勤结果.
      

  5.   

    公司制度很简单的,基本上班,有规定的时间,超过迟到时间算旷工,提前下班过早算旷工。我想知道的是,如果今天这个人上班,但没刷卡,怎样写SQL语句来判断他是否旷工?
      

  6.   

    我想知道的是,如果今天这个人上班,但没刷卡,怎样写SQL语句来判断他是否旷工?----------------------------------------------------------------------
    没有表结构,别人怎么给你写SQL语句......
      

  7.   

    为什么非要用SQL语句呢?考勤处理是否为旷工有很多考勤规则的
      

  8.   

    一个SQL语句实在不好写,我试写了一下,仅供参考!!
    请假表:
    请假类型,起始日期,结束日期, 卡号
    出差表:
    出差类型,起始日期,结束日期, 卡号
    假日表:
    假日名称,起始日期,结束日期
    考勤表:
    卡号,日期, 上班时间,下班时间,迟到,早退,旷工(float)
    @date 为查询的日期,@ID 为卡号
    select (CASE WHEN (COUNT(*) = 0) THEN 1 ELSE 0 END) AS "矿工" from 考勤表 where 日期=@date and 卡号=@ID and (卡号 not in (select (case when(@date between 起始日期 and 结束日期) then 卡号 else 0 end)  FROM   请假表) and (卡号 not in (select (case when(@date between 起始日期 and 结束日期) then 卡号 else 0 end)  FROM   出差表) and (日期 not in (select (case when(@date between 起始日期 and 结束日期) then @date else 0 end)  FROM   假日表)
      

  9.   

    说实话,主要看企业的规章制度,我新进新写的一个考勤计算,光计算部分大约有2000行SQL语句,用了整整2个存储过程,里面的参数超过300个,关于旷工部分,最起码考虑以下部分:
    1、普通人员平时上班,如果迟到或者早退超过30分钟那就得算旷工,如果迟到31分钟,那么得有参数控制是算旷工1小时还是0.75小时还是其它,说白了就是迟到31分钟算多长时间旷工2、业务人员迟到个30分钟不算的,算正常的,也不算旷工3、晚上加班的时候迟到40分钟如果你晚走一个小时这可以不算旷工的,当然这个超出的一小时也不算加班的,如果你没有这个旷工,这算是加班的4、周末加班的时候可以计算旷工也可以不计算旷工,譬如8:00-12:00,那么9:00-12:00有的人算旷工1小时加班3小时有的人不算之计算加班3小时5、譬如没有打卡,正常下班,这个时候是算一上午旷工还是没有打卡?6、8:00-12:00上班,员工9:00-11:00请假,如果请假回来后没有打卡这个时候是算1小时上班2小时请假1小时旷工还是其它?......
    关于考勤的问题相当的复杂,要想把所有企业的都考虑进取根本就不可能。当然普通写字楼上班的那他简单了,随随便便几条SQL语句即可搞定。这么多人在忽悠,楼主居然没出来......??????