2012-04-09 65 views
2

我有结构的数据库一样SQL Server查询员工明智每月出勤报告

用户:

usr_id 
    usr_fname 
    usr_lname 
    usr_uname 
    usr_pass 

organizarion:

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 

holiday_types:

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 
) 

但我需要一个月的所有日期的列表,并通过此查询检索到的数据应该放在那天的排上。 请帮忙...我非常需要它。

+0

我可以查询除日期以外的所有列。我无法显示特定月份的日期列表,但不包含所有其他字段。 – Raihan 2012-04-09 06:36:59

+1

请发布您的查询。 – Vikram 2012-04-09 06:37:35

+0

什么表格包含日期? – 2012-04-09 06:38:18

回答

0

您需要查看报告,查看包含,员工表,考勤表,薪资表或薪资表(如果有的话)以及您的班次表,制作一个视图并将该视图调用到报表中,然后制作一个功能在报告查看器中,并给它一个查询来选择该视图,请让我知道你是否需要任何帮助。