莫名其妙,这种问题也要麻烦三千兄。
给你思路:
查询开始日期+查询天数 = 结束天
查询开始日期 = 开始天
where为某字段>开始天 ADN 某字段<结束天 AND 标记字段 !=工作日 加上其它
如果要求和,sum or count
如果要顺序,则sort
难道不可以办到吗?

解决方案 »

  1.   

    penitent(只取一瓢)兄:
    问题不是那么简单:
    查询开始日期+查询天数 = 结束天 不正确
    你不能确定“结束的日期“ ,他的条件是查工作日,如果遇到休息日,结束日期要向后退,如:页面熟如:2002/10/24 和 4 (即从2002/10/24日向前查连续4天未出勤的人),
    从数据库中查得:
    21(工作日)、22(工作日)、23(休息日)、24(工作日)
    那么它的结束日就是20日
    而不是21日。遇到休息日要向前推!
    如果20日还是休息日,那结束日就是19日
    所以不能确定查询结束的日子!
    请高手帮忙
      

  2.   

    没想出来怎么用一句查询来完成,恐怕只能用过程...
    建议用一个表来存放休息日或者其他的EXCEPTIONS:
    create table Calendar_Exceptions
    ( Date_From Date,     --休息日起始日期
      Date_To   Date,     --休息日终止日期
      Apply_For Varchar2(10),  --休息日有效对象(可以是对全体有效,也可以只对某些用户/部门有效,你自己决定怎么定义结构)
      Exception_Type Varchar2(10),
      Description Varchar2(255)
    );思路是定义游标,然后循环检查是否连续日期,是否未出勤,最后返回最大的日期
    但是我不知道你的工作纪录表是如何定义的,所以无法给出具体的代码.如果有兴趣,可以继续讨论.
      

  3.   

    我们做的是日本项目,鬼子不让我们随便建表!
    三千兄:
    你的意识我明白了!但客户不让那么做!
    我们现在想的办法也是用存储过程!
    思路是:
    把满足其它缺勤条件的“休息日”和“工作日”都查出来(rs),然后循环比较!
    (1)检查包含“休息日”和“工作日”的rs的日期是否是连续的!如果连续说明“工作日“缺勤连续,符合条件,反之不符合!
    (2)检查在“工作日”缺勤次数是否大于等于页面输入的天数即可
    以上两个条件都满足的就是要查询的!
    请问三千兄有没有更好的方法!多谢帮忙!!!