首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • sql语句实现月考勤统计 [已结帖,结帖人:linuxzzj]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • linuxzzj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-24 10:22:33 楼主
    Attendance (考勤表)
    字段名   类型            约束         备注
    ID Int            PK         无
    OnDutyTime Datetime Not  null 签到时间
    OffDutyTime Datetime Not  null 签退时间
    AttendanceDate Varchar(50) Not  null 考勤日期
    OnDutyState Char(10) Not  null 上班考勤状态
                                                          (1 正常上班)
                                                  (2 迟到)
    OffDutyState Char(10) Not  null 下班考勤状态
                                                          (3 正常下班)
                                                    (4 早退)
    IsOnDuty Int       Not  null 当天是否正常考勤
                                                          (5 正常考勤)
                                                    (6考勤失败)
                                                    (7旷工)
    StaffID       Varchar(20) FK         引用员工表的ID列
    DeptID       Varchar(20) FK         引用部门表的ID列
    AttendanceType Int         FK         考勤参数表类别编码


    AttendanceType (考勤参数表)
    字段名 类型            约束         备注
    ID Int            PK         考勤参数类别编码

     
    说明:
    1 当天成功考勤标准是不迟到到也不早退。
    2 旷工:是迟到一次和早退一次并且未考勤
    3迟到、早退同时发生算考勤失败

    AttendanceTime(考勤时间表)
    字段名         类型         约束           备注
    OnDutydate Datetime Not  null 公司规定上班时间(8:30)
    OffDutydate Datetime Not  null 公司规定下班时间(17:30)

    求某一员工一个月迟到和早退次数和成功考勤次数(写成一个存储过程)
    求所有员工一个月的月考勤统计
    测试数据
    Attendance (考勤表)
    ID  OnDutyTime OffDutyTime  AttendanceDate OnDutyState  OffDutyState IsOnDuty StaffID DeptID
    1  8:20        17:30        2008-08-12      1          3            5        001  001
    2  8:40        17:30        2008-08-13      2          3            6        002  001
    3  8:30        17:00        2008-08-14      1          4            6        003  001
    4  null        null        2008-08-15      null        null        7        004  001

    如果可以求出当月的每个员工的工资在加50分
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • linuxzzj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 10:38:031楼 得分:0
    我会在线等待,如果各位大侠能给在下解决这个问题,分定会奉送,只为解决问题,分不在乎
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ws_hgo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 11:06:402楼 得分:0
    等下
    我看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wgzaaa
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 11:36:233楼 得分:0
    建的表不让空,给的数据又是空,啥叫成功考勤是只指正常考勤吗?一个月的统计是什么格式?
    -------------------------------------
    create proc pro_1_kaoqin @StaffID varchar(20),@ym varchar(6) as
    select DeptID,StaffID,sum(case when OnDutyState=4 then 1 else 0 end)迟到次数,
        sum(case when OffDutyState=4 then 1 else 0 end)早退次数,
        sum(case when IsOnDuty=5 then 1 else 0 end)成功考勤次数
    from Attendance where replace(left(AttendanceDate,7),'-','')=@ym and StaffID=@Staffid
    group by DeptID,StaffID
    -----------------------
    exec pro_1_kaoqin '001','200808'
    -----------------------
    DeptID              StaffID              迟到次数        早退次数        成功考勤次数     
    -------------------- -------------------- ----------- ----------- -----------
    001                  001                  0          0          1

    (所影响的行数为 1 行)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ws_hgo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 11:36:544楼 得分:100
    LZ
    问下你
    那个为考勤是不是
    IsOnDuty char(10),--(5 正常考勤) , (6考勤失败) ,(7旷工)
    这个考勤失败啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • linuxzzj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 18:05:565楼 得分:0
    请问大侠有什么解决办法,可以改表
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • linuxzzj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 18:18:136楼 得分:0
    我看了,可以有好的解决方法吗,解决完立马给分,拜托了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • linuxzzj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 19:00:267楼 得分:0
      Attendance(考勤表)
    CREATE TABLE [dbo].[Attendance](
    [StaffID] [varchar](20) NULL,  员工编号
    [checktime] [varchar](50) NULL, 签到时间
    [outtime] [varchar](50) NULL,  签退时间
    [OnDutyState] [varchar](10) NULL, 上班考勤状态(按时,迟到)
    [OffDutyState] [varchar](50) NULL 下班考勤状态(按时,早退)
             
    ) ON [PRIMARY]

    StaffID    checktime            outtime
    001    2005-11-01 08:26:00  2007-8-01  17:30:54
    OnDutyState  OffDutyState
    按时              按时


    统计一个月的员工迟到、早退次数,能否求出当月工资?,能的话加20分

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wgzaaa
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 10:08:588楼 得分:0
    怎么表结构也给改了,帮顶
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved