首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对员工每月考勤报告的SQL Server查询

针对员工每月考勤报告的SQL Server查询
EN

Stack Overflow用户
提问于 2012-04-09 14:30:57
回答 2查看 9K关注 0票数 2

我有一个数据库,其结构如下

用户:

代码语言:javascript
复制
    usr_id
    usr_fname
    usr_lname
    usr_uname
    usr_pass

组织:

代码语言:javascript
复制
    org_id
    org_name
    org_address
    org_tel
    org_web
    org_email
    org_cat
    org_desc

部门:

代码语言:javascript
复制
    dpt_id
    dpt_name
    dpt_desc

部分:

代码语言:javascript
复制
    sec_id
    sec_dpt_id
    sec_name
    sec_desc

名称:

代码语言:javascript
复制
    dsg_id
    dsg_sec_id
    dsg_name
    dsg_desc

员工:

代码语言:javascript
复制
    emp_id
    emp_fname
    emp_lname
    emp_phone
    emp_email
    emp_addr
    emp_join_dt
    emp_salary
    emp_card_no
    emp_dsg_id
    emp_sft_id

班次:

代码语言:javascript
复制
    sft_id
    sft_name
    sft_from
    sft_to
    sft_desc

树叶:

代码语言:javascript
复制
    lev_id
    lev_emp_id
    lev_frm
    lev_to
    lev_desc

假日:

代码语言:javascript
复制
    hld_id
    thl_tp_id
    hld_st_dt
    hld_end_dt
    hld_cmnt

holiday_types:

代码语言:javascript
复制
    hld_tp_id
    hld_tp_name
    hld_tp_desc

出席人数:

代码语言:javascript
复制
    att_id
    att_emp_id
    att_time
    att_date
    att_dir

有没有人可以帮我查询生成员工智慧的每月考勤报告,其中每个日期的进出勤时间和缺勤天数将被写入?

我的报告将如下所示:

代码语言:javascript
复制
Date        Attendance     Shift    In time      Out time
---------------------------------------------------------------------
   1        Present          A     12:40 PM      06:40 PM
   2        Absent           A       N/A           N/A
   3
   .
   .
   .
  31        Present          B     07:00 PM      11:00 PM
---------------------------------------------------------------------
Total      

到目前为止,我已经做到了:

代码语言:javascript
复制
select att_date, att_time as in_time, shifts.sft_name from attendance
    join employee on (attendance.att_emp_id = employee.emp_id)
    join shifts on (employee.emp_sft_id = shifts.sft_id)
where att_dir = 'In' and
att_time <= (
    select sft_from from shifts
    where sft_id = (
        select emp_sft_id from employee
        where emp_id = 5
    )
) and
att_date between '2012-04-01' and DATEADD(MONTH,1,'2012-04-01') and
att_date not in(
    select hld_dt from holidays
)

但是我需要一个包含一个月所有日期的列表,并且此查询检索到的数据应该放在该日期的行上。求求你帮帮我。我非常需要它。

EN

回答 2

Stack Overflow用户

发布于 2012-04-09 15:42:57

看一看Handling non existent values in sql query expression for ssrs chart

您需要一个包含日期的表来执行此操作(或者您可以使用存储过程/公用表表达式或另一种动态生成日期的方法)。

票数 0
EN

Stack Overflow用户

发布于 2013-06-13 14:53:55

您需要为报表创建一个视图,该视图包含员工表、考勤表、工资或支付表(如果有的话)以及您的班次表,创建一个视图并调用报表的视图,然后在报表查看器中创建一个函数并对其进行查询以从该视图中进行选择,如果您需要任何帮助,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10069763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档