SQL Server查询员工明智每月出勤报告
问题描述:
我有结构的数据库一样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
)
但我需要一个月的所有日期的列表,并通过此查询检索到的数据应该放在那天的排上。 请帮忙...我非常需要它。
答
看看Handling non existent values in sql query expression for ssrs chart
你需要一个包含为了使这项工作日期的表(或者你可以使用一个存储过程/公共表表达式或生成的飞行日期的另一种方法)。
答
您需要查看报告,查看包含,员工表,考勤表,薪资表或薪资表(如果有的话)以及您的班次表,制作一个视图并将该视图调用到报表中,然后制作一个功能在报告查看器中,并给它一个查询来选择该视图,请让我知道你是否需要任何帮助。
我可以查询除日期以外的所有列。我无法显示特定月份的日期列表,但不包含所有其他字段。 – Raihan 2012-04-09 06:36:59
请发布您的查询。 – Vikram 2012-04-09 06:37:35
什么表格包含日期? – 2012-04-09 06:38:18