SQL Server Query for employee wise monthly attendance report

问题描述 投票:0回答:2

我有一个结构像

的数据库

用户:

    usr_id
    usr_fname
    usr_lname
    usr_uname
    usr_pass

组织:

    org_id
    org_name
    org_address
    org_tel
    org_web
    org_email
    org_cat
    org_desc

部门:

    dpt_id
    dpt_name
    dpt_desc

部分:

    sec_id
    sec_dpt_id
    sec_name
    sec_desc

名称:

    dsg_id
    dsg_sec_id
    dsg_name
    dsg_desc

员工:

    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

班次:

    sft_id
    sft_name
    sft_from
    sft_to
    sft_desc

叶子:

    lev_id
    lev_emp_id
    lev_frm
    lev_to
    lev_desc

假期:

    hld_id
    thl_tp_id
    hld_st_dt
    hld_end_dt
    hld_cmnt

假期类型:

    hld_tp_id
    hld_tp_name
    hld_tp_desc

出勤率:

    att_id
    att_emp_id
    att_time
    att_date
    att_dir

任何人都可以帮助我查询生成员工明智的月度出勤报告,其中每个日期的上班时间和下班时间以及缺席天数的“缺席”将可用吗?

我的报告会是这样的:

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      

到目前为止我做了:

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
)

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

sql crystal-reports
2个回答
0
投票

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

您需要一个包含日期的表才能完成这项工作(或者您可以使用存储过程/公用表表达式或其他动态生成日期的方法)。


0
投票

您需要为报告创建一个视图,视图包含员工表、出勤表、薪水或薪水表(如果有)以及您的班次表,创建一个视图并将该视图调用到报告中,并在报告查看器并给它一个查询以从该视图中选择,如果您需要任何帮助,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.